「あるWebシステムの一覧画面にカラムを一つ追加してほしい」という改造依頼を受けました。
話を聞く限り、楽勝そうなのですが・・・蓋を開けたらガーン!!
数百行あるようなメソッドがわんさか存在するコードの固まりでした。
一通りソースを眺めましたが、「さてどうしたものか・・・」と頭痛がしてきました。(マジで)
いつも思うんですけど、コンパイラが分かるコードと人間が分かるコードは全然別物で、プログラマは人間が分かるコードを書くべきです!!
コンパイラは構文さえあってれば文句はいいませんから。
でも人間は構文があってるだけではコードを理解できません。
だから「文句を言うコンパイラ」が発明されたらいいなと思います。
たとえばコンパイルしようとしたら・・・
- メソッドが長過ぎる!
- 変数名やクラス名に一貫性が無い!コーディング規約を準備しろ!
- これ、コピペして作っただろ!
- 副作用が多すぎるメソッドはいかん!
- 例外を握りつぶしてどうする!
- メソッドAとメソッドBにロジックの重複発見!リファクタリングしろ!
- このモジュールは凝集度が低くて結合度は高い、とりあえず複雑すぎて読む気が失せるから出直してこい!
と怒られてコンパイルが中止される、みたいな(笑)。
半分冗談で半分本気。
ある程度はコーディングチェックツールとかで実現できそうですが、すべては無理でしょうね。
コードレビューも効果的ですが、全部人力じゃしんどいし、レビュアーのスキルも要求されますし・・・。
プログラムってどんなに汚くても一応動くから、向上心の無いプログラマは一生「とりあえず動けば良い」コードを書き続ける気がします。
だから自動的に歯止めがかかるような仕組みが必要なのではないでしょうか??