あなたは私のJavascriptを壊しました

ずいぶん前


以前は、誰もがためらうことなく、ページ上に多くの嫌なJSを書きましたが、それは非常に悪いことでした。 彼らはまだこのように書いているのではないかと疑っていますが、ブログやhabrasを読んでいない同じ人がそれをしているので、それらについて考えないようにしましょう- 神様、いや、お願いです、そうではありません



JSで最もクールでクールなのは、大企業の誰もJSに対処したくなかったということです。ファクトリーアブストラクションとマジックXMLインジェクションフレームワークの完全に組織化されたレイヤーの穏やかな世界に残りました。



そして、私のように、DBA以外の人にデータベースへのアクセス権を与えることへの制御不能な恐怖から生じる不快な「ベストプラクティス」やパフォーマンスの問題の層に入らずに、大規模な組織に支払いを望みました。 。



さらに、これらすべてのパフォーマンスの問題が発生した場合、JSでフロントエンドを作成することで全員を救うことができました。



JSのピークに達しました


jQueryの出現により、私たちの生活はさらに良くなり、私たちの周りの世界は小さな再利用されたjQueryプラグインから集まり始めました。 最後に、NPMが到着したときにピークに達し、スタンドアロンウィジェットを操作するために、多少効率的なモジュールシステムの使用を開始しました。



私は、小さなモジュールとスタンドアロンの機能とウィジェットからの素晴らしいコードで素晴らしいチームと協力できる未来を想像しました。 ライブラリ、ORM、パターンとプラクティス、およびそれらに基づくサービス工場の工場で、企業マニアからコードの制御を獲得できるとさえ考えました。



私たちは健全なプロセスに従い、すばらしいコードからすばらしいことを行い、下劣な企業フレームワークの束縛から解放されました。



あなたはすべてを壊した


今でも私は時々JSで書いていますが、より頻繁にErlangと仕事をして、ビデオのストリーミング/トランスコードのためのサービスを作成しています(だからブログに書くことはめったにありません)が、一般的に、バックエンドはとてもクールで、フロントエンドもかなりです私はクールです(私はfacebookのReactとNPMを他のすべてに使用しています)。 しかし、その後、Stack Overflowで録音に出会い、企業の発展の時代を思い出しました。そして、恐ろしいことに、Javaによって広まったこの性病がすでにインターネットの表面に現れていることがわかりました。



Angular.js:サービス、プロバイダー、またはファクトリー?


さて、この質問自体はひどいものではありません。 最も人気のある回答最も人気のある回答ではありません-この投稿の後に採掘されました)を見てみましょう。レビューから判断すると、確かに次のとおりです。



わあ! 詳細な説明をありがとう。 これですべてが明確で簡単になりました。 とてもクール!!


私が親切な人であれば、このコメントは皮肉でポーの法則の非常に良い例だと言えますが、すべてを読んだ後、残念ながらこれはポイントではなく、満足することは何もありません。



だから-私たちが最初に目にするのは、クソのAngularドキュメントからの引用です。



Angularでは、「サービス」は「オブジェクトファクトリ」によって作成されたシングルトンです。 これらのオブジェクトファクトリは、「サービスプロバイダー」によって作成される関数です。 サービスプロバイダーは「コンストラクター機能」です。 作成が行われるとき、オブジェクトファクトリ関数が配置される$ getプロパティが必要です。


そして、これはいったいどういうことだ? 私には、「Hello worldを作成するには、まずHello worldサービスを作成する必要があります。Helloworldサービスを作成すると、Hello worldファクトリーが作成され、Hello worldサービスを作成して画面にHello worldを作成できます。」



一体何? 誰かの論文を開きましたか? これは完全に理解不能です。


いいえ、あなたは他の誰かの論文を読んでいない、あなたは本当に角のある文書を読んでいる。



これが論文であれば、おそらく架空の問題に対する複雑すぎる解決策を説明するのではなく、何らかの問題の解決策を説明しようとするでしょう(これは実際には100%真実ではなく、科学者も自分の世界に住んでいますが、ほとんど真実です)



以下は、この質問に対して考案された実際の例です。


Angularが発明されたシナリオのほとんどが発明されたのではないかと疑っています。これだけで、これらすべての工場、プロキシ、サービスの外観が自由端で説明できるからです。 私が今お見せするコードと説明は無意識の狂人によって書かれており、これがすべて深刻だとは信じられません。



サービス、ファクトリー、プロバイダーは同じものにすることができます。


なに? いいえ、もちろんできます。値を返す関数にすぎませんが、さて、このウサギの穴をより深く見て、それが私たちを導く場所を見てみましょう。



「マシンのインスタンス化」の例を示します。



サービス(シングルトン)を使用すると、サービスをインスタンス化できないため、これを実行できません。


これは、プロバイダーが必要な理由を説明しています。



インスタンス化するには、ファクトリーまたはプロバイダーが必要です。


いや 主 何。 なんてこった。



var car = new Car({ cylinders: 4 })
      
      







いまいましい。 私たちはこれについて何度も企業のバックエンドの世界で議論しましたが、JSでこのでたらめを見るのは物理的に苦痛です。 言葉はまったく同じもので、最近までこの嫌なたわごとからの私の救いでした。



プロバイダーは、アプリケーション用に構成できます。


もちろん、アプリケーションを構成する必要がある場合は、プロバイダーを構成できます。 アプリケーションを構成し、エンタープライズ構成可能なアプリケーションの構成可能性を実現する他の方法は?



後で来るコード、私はただ崇拝します。 彼は実質的に既に自分のパロディであり、私は何もコメントする必要さえありません。



 app.service('CarService', function () { this.dealer = "Bad"; this.numCylinder = 4; }); app.factory('CarFactory', function () { return function (numCylinder) { this.dealer = "Bad"; this.numCylinder = numCylinder }; }); app.provider('CarProvider', function () { this.dealerName = 'Bad'; this.$get = function () { return function (numCylinder) { this.numCylinder = numCylinder; this.dealer = this.dealerName; } }; this.setDealerName = function (str) { this.dealerName = str; } });
      
      







ディーラーを設定するには、必要なことは



 app.config(function (CarProviderProvider) { CarProviderProvider.setDealerName('Good'); });
      
      







ねえ、これは単なる設定です。このコードで何もする必要はありません!!!



プレーンJSで同等のものを書くことを考えていましたが、抽象化を理解し始めたので、プログラミングはもうしたくありませんでしたが、私はテーブルの下に入り、脳が流れ出すまで床で頭を打ちました。 あなたがこの狂気にもう対処する必要がなかったなら、何でも。



しかし、なぜCarProviderではなくCarProviderProviderなのでしょうか?


これが私のアドバイスです。 そのような質問をする場合。 この質問に当てはまるような答えを必要とする質問をする場合、あなたはすべて間違っていました。



あなたがすべて間違ったことをするのは恥ずべきことではありません。これは正常です-私たちは皆間違っていますが、イベントの発展から判断すると、実際に何が起こっているのか誰も理解していません。 そしてまもなく、Angular Consultantsを雇用し、学生を何年もの間、高価なAngular Training Coursesに送ります。 おめでとうございます!



皆さん、何が悪いのですか?


クールなものがありましたが、あなたはそれを破りました。 嫌な企業の相互支援から逃れることはたくさんありましたが、パンケーキのプログラミング方法を既に学習する代わりに、工場プロバイダープロバイダーを最近まで比較的簡単にすぐに行える場所に移動しました。



地獄に行く


さて、すべて大丈夫です、私は企業のソフトウェアをもうしません。 この質問を同僚に答えて見せましたが、そのようなレベルの愚かさは何とも言えないrzhachoであるため、皆完全に笑いました。 しかし、あなたは何を知っていますか? あなたがこの穴を自分で掘り終えて、それが底なしの穴であると理解したら、私はあなたの上に立って笑います。



自分で考え始め、手遅れになる前にこのがらくたを投げて、少なくとも通常のコードを書く方法を学びます。 必要なものはすべて説明されているので、成功します。 そして、これらすべての工場、サービスプロバイダー、工場のハンドルを握る必要がある場合は、govnokodが世界に必要ないことをすぐに理解してください。 本当に成功する仕事を見つけてください。 JavaScriptを壊さないでください。



All Articles