ホビープログラミングと業務でのプログラミングの一番の違いは、
記述したコードと他者との関わり方ではないでしょうか。
他人が書いたコードを自分が修正する、自分の書いたコードを他人が修正する、なんてことは日常茶飯事です。
設計さえも自分の思惑と違う方向にいくことがしばしば。
人材不足のIT業界ですから、せっかく綺麗に設計したのにぐちゃぐちゃにされることもあります。
究極の利己主義は利他的
人間は未来予測のできる動物です。子供から大人になるにつれ、
自分の選択の影響をより後半に、より長期的に予測できるように訓練されていきます。
そしてこの能力を使って自分にふりかかるであろう災厄を事前に回避し、
より幸福を得られるようにしようとするわけです。つまるところ利己的に利用しているのですね。
利己的であるというのは生物の本質のようなものだと思います。
他者を押しのけてでも生きようとしない種族は早々に地球という舞台から姿を消してしまったことでしょう。
これだけの歴史の中で今現在を生きている種が生存に対して飽くなき欲求を持っていないはずがありません。
人間のような社会性をもった種では、ある程度の利他的行動をとります。
これは自己犠牲とか欺瞞などではなく、協調して群れを作ることが自分にとって利益だからこそです。
「情けは人のためならず」とはよく言ったものです。
人のために情けをかけるのではない、自分に戻ってくるから人にはよくしておきなさい。
これは利己のために利他的であれという格言に他なりません。
防衛的プログラミング
バグを生み出すのは人に他なりません。コーディングしなければバグは生まれないのです。
業務用のプログラミングではスキルレベルのさまざまな人がコードを触ることになります。
ここで、プロジェクトの平和を願うなら、拙いプログラミングによってバグが仕込まれることが
ないように他者の動向に気を配りましょう。そう、利己のための利他なのです。
防衛的なプログラミングとは、何から防衛的なのでしょうか?
プログラマの最大の敵、バグからの防衛に他なりません。
バグは仕込まれるものです。そして、潜むものです。防衛的プログラミングでは
- バグの潜む隙間をあらかじめ潰しておく
- バグが潜んでいたときに早期にあぶりだせるようにする
- バグが仕込まれないように警告する
といったところに注視して、バグの少ないプログラムを書こうとするものです。
バグはヒューマンエラーによって容易にもぐりこんできます。
うっかり間違えたときに、間違いをコンパイラに指摘してもらえるように工夫するとどうでしょう?
正しい使い方をしない限り先に進めない、そうバグの潜む隙間を目張りしてしまうのです。
そのためにメソッドのアクセスレベルや、強い型付けであることを利用します。
コンパイラの時点で発見できると楽なのですが、実行してみるまで分からないバグもたくさんあります。
コンパイラで100%除去できるなら実行時例外なんて存在はなくてもいいわけです。
実行時にはバグを検知したらすばやく実行時例外をthrowしてバグを知らせます。
潜ませたままでは存在に気づきません。早期にあぶりだしましょう。
潜んでいるバグをどれだけ潰したとしても、後から後から供給されるようでは埒が開きません。
バグが仕込まれないように注意点は警告しましょう。
ソースコードレベルでコメントで注意を促すといったものから、
プロジェクトメンバーへの啓蒙まで含めて考える必要があります。
バグの供給を減らした上で除去を効率化すれば、プロジェクトがクリーンになるはずです。
こういったところに気を配った丁寧なプログラミングを重ねることで、
バグの住みにくいプロジェクトにしましょう。
そうすれば、あなた自身がデスマーチを歩む確率を少しでも減らすことが出来ます。
自分が蒔いたバグの種を自分で萌芽させて憤ることも少なくなることでしょう。
未来の自分の幸せのために、ほんの少し工夫するだけです。
次回以降は具体的な防衛手法をお届けします。
サンプルコードはJavaでの記述ですが、他の言語でも応用できるはずです。
投稿日時 : 2007年8月17日 11:49