Chapter 6. While You Are Coding【The Pragmatic Programmer】
The Pragmatic Programmer の Chapter6. While You Are Coding を読んだ。 内容は次の通り。
- 31 Programming by Coincidence
- 32 Algorithm Speed
- 33 Refactoring
- 34 Code That’s Easy to Test
- 35 Evil Wizards
印象に残る章がいくつかあったので書き残しておこう。
31. Programming by Coincidence
この章は、「自分が書いてるコードをちゃんと理解していますか」というような内容だった。
最近、以前よりも自分の書いたコードに自信が持てるようになったなー、と思っていて、『コンパイルする回数が減った』とか『一発でうまく動くことが増えた』とか、そういうところで開発に効いてきている。
いくつか要因はあると思うけど、大事なことの1つは「何を期待して目の前のコード片を書いているのかを常に意識する」ということだろう。プログラマは何かしらの『期待』を持っていて、それを実現するためにコードを書くわけだけど、どのコードが何の期待を満たすのか、自分の中でちゃんとマッピングさせておくのがとてもよい。コードに自信が持てるし、コードの理解につながる。
これには別の効果もあって、自分の『期待』をただしく理解しておくと、すごくデバッグが捗る。バグはたいていの場合、何らかの『期待』と異なる挙動をしているから発生する。だから、『期待』とコードのマッピングを持っておけば、必ず最後にはバグの原因にたどり着ける。まあ、たまに期待自体が間違ってたりするし、現実はそんなうまくいかないけど、バグ解決の確率はだいぶ高まる。
あとは、この『期待』と『コード』のマッピングはなるべく小さく保っておいて、それをベースにして大きなビルディングブロックを作ってくと、とてもいいコードが書けるんじゃないかなぁと感じている。
この『期待』ってのは『意図』とも言い換えられるかなーと思ったりして、そうするとこの章の言いたいこととつながるよなーと思った。
35. Evil Wizards
これは「ウィザードで生成されたコード使うならちゃんと中身読もうね」という話で、とても説得力があった。
ライブラリの場合、ライブラリ側のコード把握する必要はない。正しいインタフェースが切られていて境界がはっきりしてるからだ。
一方、ウィザードによって生成されたコードは、私たちのコードに直接入り込んでくる。「すぐにウィザードで生成されたコードをいじることになるから、理解してないとひどいことになるよ」というのはその通りだと思った。