私は美しく書かれた、過度にエンジニアリングされたコードの私の部分に遭遇しました...一瞬で私は「それを行うための興味深い方法です」と、次の瞬間、あなたは「ここで何が起きているのか!」と疑問に思っています! 私はまた、あなたが将来にまで考えている過度にエンジニアリングされたコードを書くことによって苦しみました。 ♪ The (You Are Not Gonna Need It) 原則は、過剰なエンジニアリングに対抗するための良い方法です:機能性は、あなたがそれらを必要とするときにのみ実装されるべきであり、あなたがそれらを必要とする可能性に基づいてはなりません. I have mentioned over-engineering a couple of times now, and some of you reading this are probably thinking. 今は YAGNI 今は 非常に単純に言えば、過剰なエンジニアリングは、ソフトウェア/システムの設計を必要以上に複雑にするのであり、これは通常、Aの実装を簡素化するためにコンポーネントに追加機能を追加したいためであり、Bの機能を後で追加するためである。 私たちは招待状を管理するためのこのループベースを持っています;それは利息を増やす技術的負債を持つ継承されたコードベースです。あなたがコードベースに利息を増やそうとするほど、他のどこかで何かを破壊することを試みます。あなたはほとんどの場合に逆転し、すべてを始める必要があります。伝承コードの周辺で作業すると、必要に応じて技術的負債への関心を増やし、データを共有するようになります。最初は、これはアプリケーション全体で機能を破壊するリスクや、コードベースにより多くの技術的負債を追加することとの間の対立です。私たちが発見した3番目のソリューションは抽象化でした。私たちはアプリケーションに新しい機能や改善をモジュール化する方法を発見し、必要に応じてデータを暴 コードベースで複数の人々と協力する場合(これはほとんどの場合)、コード品質よりも配信機能に興味のある企業の場合、コードレビューは常に苦しみます。過剰エンジニアリングや過剰抽象化などの問題のために、従来のライン・バイ・ライン・コードレビューはしばしばこれらの体系的な問題を欠くことがあります。あなたは、DRY原則に従って、機能の統合をサポートするために数週間前に作成されたコンポーネントをチェックし、コンポーネントに依存する10の相互接続/類似の機能があります。コードレビューは、これらのアーキテクチャ的な問題を把握し、コンポーネント間の依存性要件が満たされていることを保証するために、上昇する必要があります。 スパゲッティ DRY Code We live by the DRY (Don’t Repeat Yourself) gospel because it simplifies work, and developers are inherently lazy (in a good way). The DRY principle works well with orthogonal systems: small, self-contained components combined to form a system. DRYの原理は正角型システムでうまく機能します。 . システムは、相互に独立した機能を実装する協力モジュールのセットで構成されなければならない。 Alıntılar - The Pragmatic Programmer: From Journeyman to Master M. Kitap.Guru シングル 正方形システムとDRYコードにより多くの重点を置くべきである;あなたが相互に作成する再利用可能な機能を組み合わせ、レポジトリが膨らみ、過剰に抽象化されていないときにレポジトリが進むにつれて、それらをスケールするのがより容易であり、その時点で、あなたは本当に正方形のシステムを使用して、スパゲッティ DRYコードを避けるために、すべてのコードモジュールの変更は、更新されているモジュールだけに影響を与えるべきである。 複雑成分 あなたのコンポーネントは、単に繰り返しを避けることに焦点を当てるのではなく、全体システムの小さな抽象化にも焦点を当てるべきです。そうでなければ、コンポーネントが単一の変更で接続されたコンポーネントに容易に破ることができるほど複雑に終わるでしょう。再利用可能なコードを作成するとき、アプローチは、特定の方法で機能するために他のコードブロックに依存しないコードを書くことです。再利用性はツールではなく目標として使用されるべきです。同じコンポーネントでビジネスやAPIの論理を持つ再利用可能なUIコンポーネントを持っているとき、あなたは過剰抽象への高速道路にいます。それは小さく始まります、そしてあなたが何が起こっているかを理解する前に、病気 過剰抽象化と過剰なエンジニアリングを避けるためのパターン MODULARITY MODULARITY MODULARITY MODULARITY Modularity は、あなたのシステムをモジュールと呼ばれるより小さい独立したコード/コンポーネントに分解することを意味します. Please pay attention to the word 'smaller'; it is possible to have a bloated module with more code than necessary, which creates over-abstraction and should be avoided. Over-abstraction is really just a unsuccessful attempt at modularity. Your modules should be able to function independently of other modules, only exposing required data. 良い、モジュール型、構造化されたコードへの変更は、いかなるカスケード効果もなく、モジュールにのみ影響を与えるべきです。 最初の機能 正方形のシステムを構築し、簡単に抽象化を避けるための良いアプローチは、最初に機能性、次に機能性で構築することです。これはコンポーネントベースのアーキテクチャ(UIコンポーネントをステータスなコンポーネントから分離する)とよく一致しています。機能性の段階は、機能を実装するために組み立てられた最小の再利用可能なコードユニットに焦点を当てます。 過度に複雑なコードのためのメダルなし すべてのコードの実装を書いた後、同じ結果を達成するためのより簡単な方法があるかどうかを自分に尋ねる。私たちのほとんどは、会社の1人だけが編集したり作業したりできるコードについての話を聞いたことがあるが、これは誇りに思えることではない。あなただけが維持できるコードを書くことは、おそらく過度に複雑であるか、または非正統的な手順を使用していることを意味する。 ある会社の元従業員は、コードをチェックせず、プログラムやコードベースの部分をハードドライブに持っていることで知られています(その製品を維持するためのオーバーヘッドを想像してください!)。 「We Run Out of Columns」 - The Best, Worst Codebase ジミー・ミラー 私は、私が最近学んだ新しいテクノロジー/パッケージ/ライブラリを使用したいので、仕事のための最も単純なツールかどうかを考慮せずに、あまりにも複雑なコードを書いています。 決勝 すべての可能な将来と時間旅行のケースを説明する完璧なコードを書くための探求では、あなたは過度にエンジニアリングされたコードベースで終わります。あなたはそれを放棄する必要があります、なぜなら完璧なコードを書くことは不可能で、あなたの直ちに必要なすべての要件を満たす十分な良いを目指します。 DRYの原則は基本的です。繰り返しはまだソフトウェア開発の罪です。 DRYの原則は、単純なシステムに適用され、それぞれのモジュールが独立し、別々の会議ポイント(機能モジュール)でデータを交換するために離れたコードベースを作成する必要があります。これらは、維持し、デバッグしやすいシステムを作成するのに役立ちます。シンプルはソフトウェア開発で常に優