遊星ゲームズ
FrontPage | RSS


オブジェクト指向とかテンプレートエンジンとかじゃ解決しない
 日記

 問題は

「大変なことになりはじめてるコードを急いで修正するとさらに大変なことになる」

 という負のループをなんとかしてほしいということで。
 まあ普通は工数が限られてるから、急いで修正する。早く終わらせるほど会社は得をするわけだから、そういうインセンティブがある。
 しかも「大変なことになりはじめてる」既存部分を修正するなんてもってのほかだ。無駄なリスクだし、無駄な工数だし、会社にとっては損以外の何者でもない。

 しかしエントロピーは手を入れるたびに増大するし、そんなわけで、プログラムはどんどん大変なことになっていく。
 テンプレートエンジンとかオブジェクト指向とか、フレームワークとか、そんなの問題を複雑にするだけだ。全員がうまく使えばいいのかもしれないけど、うまく使う人なんてそうそういない。しかもプログラムはいろんな会社を渡り歩くのだ。

 そこで考えた。もう新しい言語を流行らせるしかない。

  • マジックナンバー(定数と変数以外のあらゆる値?)を使ったらエラー
  • 1ファイル500行を超えたらエラー
  • 関数が50行を超えたらエラー
  • 一行が100バイトを超えたらエラー
  • あらゆるネストは4段階目でエラー
  • 引数が4個を超えたらエラー
  • 関数一覧や変数一覧みたいなドキュメントがないとエラー

 あと変数の数に制限とか。適切でない変数名やコメントは許さないってのもいいかも。
 うーん、流行らなさそう……。

 いやしかし、ほんとは、こういう方法は本質的でない。きれいに修正するためのインセンティブにはならないし、制限を増やせば増やすほど、どこにでもときどきいるハッカーがハックコードを書く動機を生んでしまう。
 とするとあれか。まずは小さなことから、ソースの冒頭にコメントで
「いつもきれいに使っていただきありがとうございます(ぺこり)」
 と書いてみるとか……。

 いやまあ、こんなこといいだすときというのは、仕事でそんな目にあってるわけですが。


[2007.02.18 21:09]なかた :
「変数一覧」は全ての変数をひとつの配列に押し込むという極悪なやりかたでより悪い方向に流れる気がするですよ。結局、ダメなコードを作りこむ最大の原因はダメなプログラマ、なんだよなあ。


[2007.02.20 23:09]てらしま :
>全ての変数をひとつの配列に押し込むという
 たしかに。多次元配列を安易に組めるPHPは現に、わりとそうなってるような気も。というか最近の仕事でもそんなの見た(笑) クラスメソッドが、いろんなものの入った配列を渡しあってるさまは泣けます。
 しかしこれはPHPがそういうアフォーダンスを持ってるともいえるわけで。というか持ってるに違いないと最近ほんとに思うけど。


オブジェクト指向とかテンプレートエンジンとかじゃ解決しないを