拡張性よりも可読性の仕事術

数ヶ月ごしに夜な夜な自宅趣味ソフト開発で作ってきたアプリがある。汎用性を持たせて、なるべく拡張性高いようにとあれこれ悩みながら作ってきた。一通り動くようになって、幾何カーネルの方のインプリメンテーションを行っていたのだが、これがひと段落した今、再びフレームワークいじりに戻ろうとしたところ、かつて作ってきたはずのそのフレームワークに機能を作りこむ気がさっぱりせーへん。使うはずもない複数ビューポートのサポートとか、マウスのコールバックをクラスにまとめてツールだとか言って、ツール管理とかまで作ってるくせに、肝心のツール作りこむ気がせーへん。
どうしてなのか考えてみると、「どしてそんな作りになってんの?」と思ってしまったからである。あれもできるよーにこれもできるよーに作りこんできたけど、いわゆる企画倒れってやつだ。今となってはいじり方も忘れてる。。世の中、こんなばかげた話もないものだ。って実は一番よくある話なのかも知れんのだが。。
やはり自宅で楽しくやる小回りのきくプログラミングとは、断じてベースの作りこみなどではないらしい。。それは必要に応じて徐々に高級化していけばよいのである。使うから機能アップする。必要があるから、そうする。使わないもしくは今必要ない機能アップはしない。これだ。このことにつきるのだ。
やっぱり家では楽しくやらないとね。
逆に拡張性に乏しいと思っても、コードそのまま放置する可能性があって、しばらく放置したとしてもいつでも再開できるようにっていうことなら、拡張性なんて持たせない方がいい。なぜかって、拡張性のないコードってのが、一番わかりやすいからだ!
文字通りシンプルに、その場のたった一つの目標に向かって書かれたコードは、一番わかりやすい。修正もしやすい。思い出しやすい。メンテしやすい。数ヵ月後、数年後の自分を苦しめることもない。