設計パターンが必要になる前に実装することにより、時期尚早に複雑さを導入することは良い習慣ではありません。
しかし、すべての(またはほとんどの)SOLIDの原則に従い、共通の設計パターンを使用すると、機能と要件が追加または変更され、設計が必要に応じて保守可能かつ柔軟に維持されるため、多少の複雑さが生じます。
しかし、その複雑さが導入され、チャンピオンのように機能するようになったら、いつそれを削除しますか?
例。クライアント用に作成されたアプリケーションがあります。元々従業員に昇給を与えるいくつかの方法がある場所で作成されたとき。戦略パターンとファクトリーを使用して、プロセス全体をきれいに保ちました。時間が経つにつれて、アプリケーション所有者によって追加または削除される特定のraiseメソッド。
時間が経ち、新しい所有者が引き継ぎます。この新しい所有者は頑固で、すべてをシンプルに保ち、昇給する方法は1つしかありません。
戦略パターンに必要な複雑さはもはや必要ありません。現在の要件からこれをコーディングする場合、この余分な複雑さは導入しません(ただし、必要に応じてほとんど、またはまったく作業をせずに導入できることを確認してください)。
戦略の実装を今すぐ削除しますか?この新しい所有者が昇給の方法を変えることはないと思います。しかし、アプリケーション自体は、これが起こる可能性があることを実証しています。
もちろん、これは新しい所有者が引き継ぎ、多くのプロセスを簡素化したアプリケーションのほんの一例です。数十のクラス、インターフェース、ファクトリーを削除し、アプリケーション全体をよりシンプルにすることができました。現在の実装は正常に機能し、所有者はそれで満足していることに注意してください(そして、議論された複雑さのために、私は彼女の変更を非常に迅速に実装できたことに驚き、そしてさらに幸せです)。
この疑いのほんの一部は、新しい所有者が私をもう使用しない可能性が高いためです。大きな収入源ではないので、他の誰かがこれを引き継ぐことを本当に気にしません。
しかし、私は2つの(関連する)ことを気にします
コードを理解しようとするとき、新しいメンテナーが少し難しく考える必要があることに少し気を配ります。複雑さは複雑さであり、私に続く心理マニアを怒らせたくありません。
しかし、競合他社がこの複雑さを認識し、仕事に時間を費やすためにデザインパターンを実装するだけだと考えていることをさらに心配しています。次に、この噂を広めて、他のビジネスを傷つけました。(私はこれが言及されたと聞いています。)
そう...
一般に、以前は必要だった複雑さは、それが機能し、複雑さに対する歴史的に実証された必要性があったとしても削除されるべきですが、将来必要になるという兆候はありませんか?
上記の質問が一般的に「いいえ」と回答されたとしても、プロジェクトを競合他社(または見知らぬ人)に引き渡す場合、この「不要な」複雑さを取り除くことは賢明でしょうか?