全体最適か?それとも部分最適か?

原則:
* 既存コードを修正することなく、機能追加を実現する
o 画面が追加されても、既存のメソッドに修正が入らず、メソッド追加で対応できること
o ボタン追加などイベント処理が追加されても、既存のメソッドに修正が入らず、メソッド追加で対応できること
o 初期化ロジックの無い箇所に後から初期化ロジックを追加する場合でも、クラスのインターフェースは変更しないこと


追記:
このエントリで用いている「全体最適部分最適」という言葉は、一般的な概念や用語ではないです。
 以下のように読み替えて読み進めて頂ければと思います。
  部分最適 ⇒ (個別モジュールごとに)最適化されたコード
  全体最適 ⇒ (全域にまたがる強めの)ルールに則ったコード



普段私がコードを書く時に気を付けていること」のエントリーを書いたものの
部分最適されたコードと全体最適されたコードのどちらスタイルを採用するかは、
一長一短いなので、とても悩ましい問題です。


全体最適されたコード派の人は、サンプルならともかく、
実案件の業務として書くコードならば、規模や人数が増えると
何かしらのガイドラインに沿ってコードを書くことは当然と考えるだろう。


一方、部分最適されたコード派の人は、XP(エクストリーム・プログラミング)のYAGNIの考えを持ち出して、
「予想に基づく行動にはリスクが伴う」、「今必要な機能だけを作れ」、
「将来、別の機能が求められれば、そのときに作ればいい」と考えるだろう。(※)


悩ましいですね。今は、大雑把に部分最適全体最適という形で扱っていますが、
要素分解すると、直行しないで上手く共存できるラインが見えるかもしれないので、
もう少し検討する必要があるなぁ。


※ エンタープライズアプリで、XPの適応はいろいろ課題があるという意見もある。