どうしてこんなになるまで放っておいたんだ

f:id:saikou9901:20150921223104j:plain

これ読んでます。

プログラマが知るべき97のこと

プログラマが知るべき97のこと

この中の7つ目のエッセンス『共有は慎重に』ってとこ、ちょうど読んでるんですが、すごく頷きました。

考えた結果わかったのは、私が1つ重大なことを見逃していた、ということです。

それは「コンテキスト」です。

たとえシステム内に同様の処理を行う部分が2つあったとしても、両者のシステムにおける役割が大きく異なっていれば、再利用によるメリットは少ないのです。私がコードをライブラリ化するまで、そのコードを利用する部分間に依存関係はまったくありませんでした。元々の成り立ちが全然違うコードだったのです。従って、状況やニーズが変われば、その後各部分のロジックにはまったく別の変更が必要になる可能性が高いということです。

―『共有は慎重に』より抜粋

いま、あるお客さんが使っていたパッケージソフトウェアを、スクラッチで抜粋して移植するというプロジェクトを管理しています。 一部、新規設計の箇所もあります。

プログラマーが何人かいますが、提供されたパッケージのソースを追っていて、つくづくこういう言葉が出てきます。

  • 「このコードひどいな!何も考えてない!」

  • 「なんでこんな処理してんの?こうしたほうが理にかなってるじゃん」

新規の設計の箇所については

  • 「こうしたほうが無駄が無くないですか?」

無くないってなんだよ。今夜はブギーバックかよ。

そして共通の決めセリフはこれです。

  • 「ここ、こうしちゃっていいですか?」

ごもっとも・・・ごもっとも・・・


というわけで、もっぱら最近の私の仕事は次の通りです。

  • 「このコードは、きっとこういう運用を想定してつくってるんですよ。ですので、現行のままにしてくださいね。。。」

  • 「ここは、今後お客さんが運用していくとこういう風になりそうだから、冗長にしてるんですよ。ですので、設計書のままにしてくださいね。。。」


既存のコードがあって移植する時やリファクタリングする時、それだけでなく、新規に設計・コーディングするときも、冒頭の引用で謳われている「コンテキスト」(意図、歴史、背景・・・ってことでいいのかな?)を気にすることが大切だと思います。

この本は読み終わったら会社に設置しよう・・・