弱い凝集力の喪失

LOSING LOOSE COUPLINGの翻訳



モンスタートラックバイク 面接に出席するように頼まれたとき、私は通常、候補者に1つの質問をします:「良いコードは何ですか?」 最近の卒業生からよく聞かれるのは、「良いコメントを持っている」ということです。 これは間違った答えです。 誰にこれを教えますか? 恐ろしく。 しかし、気が散ってしまいました...私の質問に対する正しい答えはないと思いますが、「高い凝集力と疎結合」のようなものを受け入れます。 少なくとも、コードについて何かを言います。 しかし、これがJava開発者とのインタビューである場合、追加の質問をせずに貧しい人を去らせません。 Java開発者は完全にクレイジーだからです。 彼らは、超大型コードを小さな断片に切り刻むことに夢中です。 実際に何もなくなるまで、刻みます。 小さな道路が分離されるとすぐに、私たちはそれらが互いに触れないことを心配し始めます。 あ、ベイビー 私たちはすべての費用をかけてお互いを保護しなければなりません。 コードの各断片には独自のインターフェイスがあり、他の部分に直接手を差し伸べて手を汚すことはできません。 それらを魔法のフレームワークにバインドします。 抽象プロキシを使用して、工場などを作成します。



そのような原理で作られた自転車を想像してください。 フレームは、背骨のタイプによって接続された、長さ1センチの断片に切り刻まれます。 より柔軟になりますか? 間違いなくはい。 実用的ですか? もちろん違います。 製造には数百倍の費用がかかります。 また、何百回も頻繁に破損します。 このような自転車はより多くの事故につながり、そして最後になりますが、奇妙に見えて、乗るのが難しくなります。 私たちの背中は柔軟でなければならないので、脊椎は理にかなっています。 自転車-いいえ。



一本の金属や炭素繊維で自転車を作るわけではありません。 車輪を変えることも、ハンドルを変えることもできますが、これには夢中ではありません。 一部は小さく、一部は大きく、これは悪くありません。



自転車を設計するときに行うもう1つのことは、一般的な「輸送装置」ではなく自転車を開発することです。 いつの日か大西洋を渡ることができるように、私たちはお客様に脳を粉にしません。 彼らがこれをしたいのであれば、確かに私たちの自転車ではありません。 お客様が高層ビルの屋上まで飛びたい場合は、少しお手伝いします。 これは正常です。 私たちは世界で最高の自転車を作りたいです。 任意の車両に再構成でき、それでもうまく機能する自転車は、バットマンのオプションかもしれませんが、残念ながら私たちの多くはそのような予算を持っていません。 私たちはシステムをクールで、その目的に適したものにし、何を構築しているかを知りたいです。 欲しいものが分からない人や、サードパーティのサプライヤにシステムの一部を開発させたいときの柔軟性と構成可能性。 自転車フレームのメーカーは、自転車を1種類のシート、1種類のハンドルバー、または1種類のホイールに厳密に限定していません。 プログラミングに関しては、これらは



インターフェースに接続されており、特定のステアリングホイールモデルをいくつでも実装できます。 しかし、フレームは独自の製品であり、小さな交換可能な断片に切断されません。 彼らが別のフレームを作りたい場合-何を推測しますか? 彼らは異なるモデルを作ります。 モデルは多くの一般的な機能を使用しますが、まだ完全に異なっています。



プログラミングでは、システムの一部を他の実装に置き換えようとします。 1つ変更すると、他の何かが機能しなくなるという事実につながる場合、これは悪い設計であることがわかります。 しかし、モンスタートラックの車輪を自転車に乗せるとどうなりますか? 自転車はあまりうまくいきませんよね? しかし、これは自転車の設計が不十分であることを意味しますか? 現実の世界では、物事はお互いに関連しているという事実に耐えています(必要に応じて「ハードスキン」)。 このことが適切である理由とそうでない理由を理解しています。 自転車には、フレームに合う車輪が必要です。



インターフェースだけを使用することはできません;かなり正確でなければなりません。 車輪を取り付けることができる自転車の設計は非常に複雑です。 それは価値がありません。



バイクにモンスタートラックの車輪を持たせたい場合は、デザインを変更し、適合するようにする必要があります。 そして、あなたは何を知っている-私たちはプログラミングでこれを行うことができます。 この驚くべきテクニックを思いつきました。IntelliJでも同じことができるかどうかわかりませんが、少なくともEclipse(使用しているもの)では、変更する必要があるコードを選択できます。SHIFTキーを押しながらカーソルボタンを押しますコードの変更が必要な部分が強調表示されるまで。 Shiftキーを放し、Delキーを押します。 そして、コードは消えます! そして、あなたは何か他のものを書くことができます。 本当にうまくいきます! 試しました。 xmlファイルまたはプロパティファイルだけでなく、Javaコードでも! これはすごい!



大規模な企業プロジェクトが莫大な費用を費やし、開発に永遠に費やし、結果を得ようとすると事実上失敗することに気付いたことはありませんか? これには多くの理由があります。 しかし、それらの1つは柔軟性であると確信しています。 汎用コードのミニピースに個別に包まれた包丁と真空バッグの柔軟性。 特定のよく知られている場合に適した(おそらく複数の)システムを作成する代わりに、すべてを管理する単一の(超構成可能な)システムを作成することを主張します。 ニーズが何であれ、誰でも、どこでも動作するプログラム。



しかし、ある日データベースを変更する必要がある場合はどうでしょうか? 他の場所でこのデータが必要な場合はどうなりますか? このメッセージの形式が変更された場合はどうなりますか? 変更できます。 システムのリリースの頻度はそもそもではありませんか? それらを変更したらどうなりますか? システムが十分にテストされ、適切に設計されていれば、変更は問題になりません。



接続が弱いのですが、お願いします。解決策が問題に関連していることを確認してください。



All Articles