上手@データ通信システム です。
修正版です。
佃さんの指摘を反映させました。ありがとうございました。
XPractices 25.
Do the simplest thing that could possibly work
動くであろう最も単純なことをやる
我々の開発における最も重要なルールは、いつも、動くであろう最も単純なこと
をするということだ。そんなにまぬけではなく、明らかに動かないわけではない
ものだ。しかし単純であることは高速で進捗させるための最も重要な要因だ。
我々自身がこのルールをいつも忘れないようにしなければいけないことを銘記し
よう。開発者は開発することが好きだ、そして我々のほとんどは、求められてい
ることの何でも全てを解決する”一般解”を創るに何年も費やした経験がある。
もし我々が問題が実際にそうであることに対してだけ仕事をすれば、実際の問題
に対する実際の進捗は最大になる。
<反論>
将来必要になると解っているなら、最初にオブジェクトを作る時に、その機能も
組み込むべきだ。その方が時間の節約になる。
・どうしてそれが時間の節約になるのか? ベストでもかかる時間はとんとんだ。
ちょっとまずればすぐ時間超過だ。
・あなたが"これはいつか必要になるだろう”と考えている時、あなたは”これは
今日必要だ”とは考えていない。あなたは、まさに自分からゴールから離れた。
明日を追っかけて、エラーを混ぜないように。
・ソフトウェアは80/20ルールに従う:80%の恩恵は20%の仕事からもたらされる。
その単純な20%を見つけ、それを実行しなさい。
・研究調査によると、開発者は将来必要となる機能を予測するのはそんなに上手
ではない。現実のニーズの発生を待ち、それにその時対応する方が良い。
smalltalk コードは修正が極めて容易だ。未来のために設計やビルドをする必要
はない。もし今やるべきことをきちんとやれば進捗は一番速くなる : 未来の
ことは未来に任せよう。
<反論>
もし私が一つの新しいオブジェクトに熱中している時なら、どうしたら良いか良
く解るが、後でやるのでは、そこまでスピードが上がらないから難しくなる。
・もしオブジェクトがそんなに複雑で後で修正するのが困難なら、それは複雑過
ぎるんだ。単純化して新しい機能追加が容易になる様にしなさい、でも追加を今
やってそれ(オブジェクト)をより複雑にしないように。
・そのキーアイデアを注釈(クラスコメント、メソッドコメント)に書きなさい。
(そして、今必要とされる作業を進めなさい。)あなたの使命は、問題がそうで
あるかもしれない(仮定の)ことや、そうなるかもしれない(未来の)ことに対
してではなく、実際に問題がそうであることに対して最も速く進捗させることだ。
オリジナル http://www.xprogramming.com/
Copyright (c) 1999, REJeffries et al. (ronjeffries@....org)