2. Humans don't mean what they say. — 人間は喋っているとおりには考えていない。プログラマなら間違ったことを喋っている人に対しそれを指摘したくなるかもしれない。しかし、それは賢さの若干のアピールになるかもしれないが、「いまいましいバカ野郎」という風にも思われてしまうだろう。
3. Programs don't need to see an example. — プログラムは例を必要としない。しかし、人間には必要だ。例を与えて絵を描いてまた例を与えてまた別の絵を描いて……と苦労してやっと相手に自分が何を言いたいかを伝えられるのである。例を与えることなしに物事を伝えて相手が理解してくれなくても、キレてはいけない。コンピュータは人間がキレても気にしないが、人間はそうではない。
というかプログラマでも普段そうやってプログラムを書いているヒト多いよね? (スコア:1)
1. D.R.Y. Does Not Apply. — D.R.Y(don't repeat yourself、同じことを繰り返すな)ということは(人間には)適用するな。初めて行うことは失敗しやすいから何回も同じことを繰り返したほうがよい、
というかプログラマもよく繰り返しちゃうよね?
それで後からメソッドや変数や共通の親クラスにくくりだしたりすることはよくあるよ。
2. Humans don't mean what they say. — 人間は喋っているとおりには考えていない。プログラマなら間違ったことを喋っている人に対しそれを指摘したくなるかもしれない。しかし、それは賢さの若干のアピールになるかもしれないが、「いまいましいバカ野郎」という風にも思われてしまうだろう。
というかプログラマも書いてるコードの通りには考えていないことがよくあるよね。
打った内容=考えてた内容になっているならバグはもうちょっとは少ないはず。
3. Programs don't need to see an example. — プログラムは例を必要としない。しかし、人間には必要だ。例を与えて絵を描いてまた例を与えてまた別の絵を描いて……と苦労してやっと相手に自分が何を言いたいかを伝えられるのである。例を与えることなしに物事を伝えて相手が理解してくれなくても、キレてはいけない。コンピュータは人間がキレても気にしないが、人間はそうではない。
というかプログラマも例を必要とするよね?
ループや再帰を3まで回してみて処理や終了条件を考えたりするよね。具象オブジェクトを幾つか書いて後から抽象オブジェクト書いたりインターフェース作るのもよくあることだし。
4. Programs love definitions; Humans get flummoxed. — プログラムは定義が大好きだが、人間は定義で混乱する。プログラマではない人々の前で新しい物事や言葉を定義するな。彼らは思考停止して週末をどうやって過ごすかを考え始めてしまう。
というかプログラマもよく定義を飛ばすよね。
定義が明確でなくてなんとなくメソッドや関数やサブルーチンの動作で実質意味が決まってるコードなんて珍しくもなんともないよね。
どっちかというと後でメンテが辛くなってコードを整理する努力を開始してようやく定義がすっきりとなされるなんてありがちなプロセスだよね。
…つまりリファクタリングはプログラム開発においてもコミュニケーションにおいても自然なプロセスである!(か?w)
#実のところプログラムはマシン及び将来のメンテナンス担当者とのコミュニケーションだからという考え方もあるしね。