プログラミング書籍『コードコンプリート』

「コードコンプリート」~完全なプログラミングを目指して~ 
(スティーヴ・マコネル著)(日経BPソフトプレス刊)

20090412_code01
 プログラミングノウハウの名著として名高い本ですので今更という気がするのですが、あの分厚さ(それも上下巻)というボリュームのせいもあって、今まで読んでいませんでした。
 最近、トレード検証ツールをVBAで構築する機会があり、それを他のエンジニアと分担して作業したのですが、自分のプログラミングスキルの低さにほとほとあきれてしまい、一念発起してこの本を読み始めたというわけです。

■本書の位置づけ

 ソフトウェア開発には要求分析から始まって、システム設計、機能設計、コーディング、テスト、保守とさまざまな段階からなりたっています。この本はすべてを見据えてはいますが、その中心をコーディングにおいています。コーディングを中心としたソフトウェアコンストラクションがソフトウェア開発の大部分を占めるからです。

 
■とにかく素晴らしい

 こんな分厚い(上巻だけで600ページ)本なのに飽きずに吸い込まれるように最後まで読み進めることができました。よくある、あるべき論や精神論に終わっていず、具体的な手法をこれでもかというくらい実例豊富に説明しているのです。(例題はJava,C++,BisualBasic)
 私はもうすでに会社組織からは離れていますので、今は単なるアマチュアプログラマです。ですので、気楽に読めたということもあるのでしょうが、新人プログラマ(というか少し経験を積んだプログラマ)にはぜひ読んで欲しい、そしていつでも読み返して欲しい内容です。

■名前の付け方

 具体的な例としてもっともシンプルな内容を紹介したいと思います。
 プログラミングを行う際には、変数やルーチンの名前を付けますが、この単純とも思えることが以外と悩みます。この本ではこの名前付けに結構スポットをあてているのです。たとえばルーチンの名前付けですが、「そのルーチンで行っていることを漏らさず表現する名前にすること」としているのですね。そして、その結果長すぎるルーチン名になったら「設計が悪い、もっとルーチンをシンプルな機能にしないといけない」といってます。これは目から鱗という感じ。

■とりあえず何を実践したか

 最近作ったVBAの検証ツールで実践したことは以下の通り。

・ルーチン名、変数名を具体的に
・ルーチンは単一機能に
・マジックナンバーを廃止して、Enumを活用
・変数の宣言~初期化~参照はできるだけ近くに
・グローバル変数を制限する

こんな基本的な簡単なポイントを適用するだけでプログラムは美しく生まれ変わりました。

■座右の書に

 「座右の書」といったら人生訓などが書いてあるたぐいの本が選ばれるのでしょうが、「生涯一プログラマ」をモットーとする私にとってこの本はまさに座右の書としてふさわしい。時間のあるときはぱらぱらと確認し、年1回くらいは定期的に読み直したいです。

コメント