** 修正主義 [#o06450c4]
> 晴れ。暖かい。Bプロジェクトはだいぶ動く物になってきて楽しい。今日は1つでたバグをつぶすのに結構時間がかかってしまった。たぶんこの辺の複雑になってる部分でバグってるんだろうなと当たりを付けていた所が実は違っていて、ちょっと手前のデータ取得部分でNullPoしてたという、そこに気づけば速攻終わるはずのつまらないオチだった。しかしこういった本来つまらないバグのはずなのに勘違いして大改修しそうになるのはよくある。
> バグはまず再現させて再現条件を特定する。一見他愛もない事だが実はこれがかなり重要。次に条件を少しずつ変えてみて原因を特定する。ある程度時間をかけても原因を特定出来なかった場合、デバッグメッセージを各地に散りばめて実行すると大抵の場合特定出来る。改修した後、再現条件でバグがでないか確認する。最初に行った再現条件の特定はここで必要になる。条件がわかってない場合確認テストができないため、一見直ったように見えても「たぶん直ったと思う」程度の改修にしかならず、大抵しばらくするとまた同じバグが出るようになる。単体テストではOKなのに結合するとバグる時はデータがおかしい可能性がある。どう見てもロジックにバグが見当たらない場合データを疑ってみよう。というのが僕のバグの直し方。
> プログラム志望の人へのアドバイスに「プログラムっていうのは非常に繊細、1文字でも間違えたら動かないので完璧に作る必要がある」なんて話を聞いたことがあるけど僕は違うと思うな。1回書いて完璧に動くなんてことはありえない。むしろバグは日常的にでるもので、それを柔軟に発見できる、完璧型じゃなくて修正型だと思うよ。大規模な料理を一度も味見せずに完璧に作る人なんていない。
----
#comment(nodate);