じゃがめブログ

毒にはなるが薬にはならない、じゃがいもの芽のようなことだけを書き綴るブログです。

腕に覚えのあるプログラマーがやりがちな『ありがた迷惑』

Twitterにメモしておいたことより。
2次開発から参加したプロジェクトで、1次開発の開発者が該当していると「勘弁してくれよ、もう〜」となるものを集めてみました。思いついたまま書いたのでイマイチまとまり無し。

「共通ライブラリ」を作りこむ

『利用されない』という問題

プログラマーが独断で共通ライブラリを作成するとき、殆どの場合に置いてその共通化は『想像』によってなされます。では想像で作られたものが実際に使われるか、となるとこれはほぼノーです。未来を予測することは誰にも出来ませんから。Tommorow Never Knows.
そうやって山のように作られたメソッド群から、目的にそぐったものを探す。これはかなりの面倒な作業です。一瞬で目的にたどり着けるくらいにドキュメントが充実していれば良いですが、そういったことはまずありません。*1
そうこうしているうちに、自前で実装*2しちゃえ、となるわけです。

『改修できない』という問題

共通で利用されているものを改修した場合、利用している先も含めてテストをおこなう必要があります。リグレッションテストと呼ばれるテストですが、これがまた面倒くさい。気を利かせて自動単体テストを作成するなどしてくれているなら良いですが、そこまでしてくれるプログラマーは殆ど居ません。何故なら、プログラマーの傾向として、作成することへの意欲は強い反面テストすることへの意欲が弱いからです*3
迂闊に手を入れるとどこまで影響があるかわからないものの場合は、検討の末に『見なかったことにする』という善処をされることもあります。そのようにして、爆弾は日々埋め込まれていくわけです。

そもそも

Javaや.NETといった高級言語には、共通的に使われるクラスなんて殆ど揃っているんですよ。「どんな業務でも使える」ような共通機能でデフォルトのライブラリに無いなんてそんなにありません。機能自体が既に存在しているか、求める機能が業務依存になっているかのどちらかです。
業務依存ならば設定ファイルに持たせるなどの対処のほうが適しているのではないでしょうか。

無意味なコメントを残す

改修による変更前コード

残さなくて良いです。中途半端にソースコードが残っていても、どういった意図で残しているのかわからなくなってはゴミ同然です。どうしても残しておきたいならバージョン管理ツールを導入して残した上で、最新コードからは削除してください。

ソースコードの挙動をあらわすコメント
// hogeFlgが1の場合、処理をおこなう
if (1 == hogeFlg || 2 == hogeFlg) {

else {

}

どうでしょう。このコメントは必要でしょうか?
コードを読んで理解するのとコメントを読んで理解するのに掛かる時間が殆ど同じであれば、コメントは残す必要がありません。コメントはそれ自身をコンパイラーがチェックする方法がありませんから、実装と齟齬が出る可能性もある。そうなると無意味を通り越してマイナスにもなりえる。コメントはなるべく減らしましょう、ということです。

ただし、業務を説明する文言や、仕様などによりやむなく実装したなどの「今の自分」しか解らない事を残しておくのは良いと思います。

無理やりMVCなどのアーキテクチャを適用する(.NET)

.NET、特にASP.NETは基本的にMVCに綺麗に分けることが難しい、っていうか出来ません。「ASP.NET MVC」と言うのが新しく出来たのが逆の証明になっています。ユーザーからのポストをフォームが受け取ってる時点でMVCたりえない。にも関わらず、無理やりMVCっぽく作ろうとして破綻する、というパターンが後を絶ちません。
もちろん、アーキテクチャを固める必要はあります。検討する価値は有る。混沌を遠ざけておかないと後々の自分の首を絞めてしまうことになりますから。だからといって猫も杓子もMVCとかドキュメントビューアーキテクチャだとかレイヤーパターンだとか取り入れてうまく行くものでもない。
アーキテクチャを決めるためには
・規模はどの程度か?
・横断的要素は何か?
・例外はどのように処理するか?
……などなどを検討する必要があります。そこまで考えられているプログラマーは、これもまた残念ながら殆どいません。



他にも色々ありますが、長くなってきたのでこの辺で。

*1:一瞬でたどり着けるということは機能からの逆引きのドキュメントだろうと思いますが、そんな大層なドキュメントなら作るのにまたコストが掛かりますから。片手間に出来るほど甘くは有りません

*2:プログラマーが好んで使う言葉。製作の意味。

*3:彼らは、今動いている、という事実だけを担保に「大丈夫」と言いがちです。そういうのを見るにつけ「自分を信じるなよ」と言っています