同僚が組んだAppleScriptの改修を行っていたのだが、彼のプログラムを読んだのは、実は初めてだった。
まるでスタイルが違う。
自分は、独立したモジュールを小分けに作って、それを連結・拡張していくという作り方をする。その方が、モジュール単位で動作試験を行いやすいし、何か問題が生じた場合でも特定モジュールのみ直せばいい。細かい部品をどんどんブラックボックス化して、ブラックボックス同士をつないで雪玉のように大きくしていくので、考えることが少なくて済むのだ。
ところが、同僚のプログラムは「ストロングスタイル」というのだろうか、一本道でひたすら処理を記述するタイプである。あまり構造化されておらず、処理を追いかけるのが大変だ。おまけにグローバル変数が幾つも用意されており、1カ所の変更があちこちに波及する……。
「プログラミング向き」の頭の人というのは、頭の中の「一次記憶」の容量の大きな人だと思っている。暗算が得意なタイプの頭というのだろうか、さまざまな約束事や設定を頭の中のメインメモリに溜め込んでおいて、すぐにそれらを取り出すことができれば、どれだけ巨大なプログラムでも、苦もなく作り上げることができるだろう。
だが、自分も含めて「それほど向いていない人」は、この一時記憶の容量が大きくない。一次記憶よりもアクセス時間を要する二次記憶(メモや本など)に頼ることになる。そして、一部のブレイン・マッチョをのぞけば、大部分はこちらに属するはずだ。
……ケースバイケースではあるものの、こういうプログラミング向きの頭の構造を持つ人のプログラムは、比較的ストロングスタイルになりやすいという印象を持っている。マッチョ仕様のプログラムは、読んでいて頭痛がしてくるのだ。
自分はプログラミングにそれほどパワーを割きたくないし無理である。マッチョ仕様のプログラミングスタイルの真似をしても無理なものは無理なのだ。自分はどちらかといえばアイデアをスケッチしたり、情報収集する方に重きを置いている。他人の真似なんかしても無理なんだから、自分に合ったスタイルを通すほかない。
自分が重視しているのは、以下のような項目だ。
・命令語の種類は極力少なく(無駄にテクニックに走らない)
・プログラムの記述は簡潔に
凝った記述は絶対に行わない。誰が読んでも分かりやすいものを心がける。コメントも適度に付け、意味ブロックごとに空行を入れて美しく整える。当然といえば当然のことだが、つねにそうなっているのといないのとでは、メンテナンス性がまったく違ってくる。
・プログラムの内容は簡単に
アイデアをプログラムに落とし込む際、その動作が簡単であればあるほど正しいと考えている。複雑な課題をさまざまな方向から分析し、「おっそろしく簡単」なレベルにまでスケールダウンさせる。プログラムに複雑な概念をそのまま実装することは避け、あくまでも簡単な概念に落とし込んで実装する。
・独立性の高いモジュールで作る
つねに再利用することを前提にモジュールを作るので、モジュールを作れば作るほど、雪だるま式に寄せ集め、巨大なものを作れるようになる。