心配性の人はソフトウェア開発に向いていないかも知れない

ふとソースコードの断片に目が止まり、これが妙に気になって仕方ないことがある。

public int Foo(int i)
{
   // do something wonderful here
   return x;
}

例えば、上記のようなコードの場合、こんなことを考えてしまう。

  • int型の引数を取っているけど、これは0とかマイナスの場合もあり得るのだろうか?有効な値の範囲は何なのだろう?
  • 引数をいきなり配列の添え字に使っているけど、配列の範囲外だったら誰が何処で例外を捕捉しているのだろう?
  • 引数を2倍して計算しているところが有るけど、もの凄く大きい値が指定されてきたら、ここでオーバーフローしてしまうよ。
  • ユニットテストは用意されているけど、引数の値のチェック範囲は要件を満たすほどに充分なのだろうか?
  • 戻り値の変数にマジックナンバが使われているけど、呼び出し側でも同じようにマジックナンバで参照しているのだろうか?
  • このメソッドはスレッドセーフと見なして良いのだろうか?
  • 他のコードを見ると、インスタンスの状態によっては正しい値を返せない時があるようだ。呼ぶべきタイミング、呼び出してはいけないタイミングがあるのだろうか?

こんな疑問に答えてくれるのが「ソースコードのコメント」や「Assertによる事前・事後検証(表明)」、「設計書」だったりするのだけど、そんな肝心な情報に限って存在しないというのが開発現場の実状だったりする。他の人は気にならないのか、或いは気にしてはいけないのか、今度聞いてみようと思っている。



関連