前提
私は、オブジェクト指向設計手法の「良い」と「悪い」を客観的に定義する方法があり、コミュニティとしてこれらが何であるかを判断できると信じています。これはアカデミックな演習です。本気でやり遂げれば、コミュニティ全体に大きな利益をもたらすと信じています。コミュニティは、「このテクニックは『良い』か『悪い』かであり、特別な状況がない限り使用すべきか、使用すべきではない」と指摘できる場所を持つことで利益を得ることができます。
プラン
この取り組みでは、(関数型、セットベース、またはその他のタイプの言語とは対照的に) オブジェクト指向の原則に焦点を当てる必要があります。
私は 1 つの回答を受け入れるつもりはありません。代わりに、回答が最終的なコレクションに貢献するか、問題の合理的な議論になることを望んでいます。
これには賛否両論があるかもしれませんが、私たちは何かを解決できると信じています. ほとんどすべてのルールには例外があり、これが意見の相違の原因になると私は信じています。私たちは宣言を行い、関連する例外と反対者からの異議に注意する必要があります。
基本
「良い」と「悪い」の定義を試してみたいと思います。
「良い」 - この手法は初めて機能し、永続的な解決策になります。後で簡単に変更でき、実装に費やした時間の投資をすぐに支払うことができます。これは一貫して適用でき、将来の保守プログラマーによって容易に認識されます。全体として、それは優れた機能に貢献し、製品の寿命全体にわたってメンテナンスのコストを削減します.
「悪い」 - この手法は短期的にはうまくいくかもしれませんが、すぐに不利になります。すぐに変更するのが難しいか、時間の経過とともにより困難になります。初期投資は少額でも多額でもかまいませんが、すぐにコストが増大し、最終的にはサンク コストになり、削除するか、常に回避する必要があります。これは主観的に適用されたものであり、一貫性がなく、将来、メンテナンス プログラマーが驚くか、容易に認識できないものになる可能性があります。全体として、それは製品の保守および/または操作の最終的な増加コストに寄与し、製品への変更を抑制または防止します。変化を阻害または防止することにより、それは単なる直接費用ではなく、機会費用および重大な責任になります。
スターター
優れた貢献とはどのようなものかを示す例として、「優れた」原則を提案したいと思います。
関心事の分離
[簡単な説明]
例
[コードまたはその他のタイプの例]
目標
【この原理で防げるトラブルの解説】
適用性
[なぜ、どこで、いつこの原則を使用するのですか?]
例外
[この原則を使用しない場合、または実際に害を及ぼす可能性があるのはどのような場合ですか?]
反対意見
[コミュニティからの反対意見や反対意見はこちらに記入してください]