仕事中に、以下のようなコードに出くわして、一瞬「これ動かないんじゃないか」と思ってしまった。しかし、それは正常に動作するコードだったのだ。
if(bCheck && !Check()) { return; }
ちゃんと見れば解るようなものなのですが、眠気と戦っている最中なんかはちょっと読めない。自分で書いたコードなんですけどね……。
C++ に慣れてくると、コードはできるだけ短く書きたくなってくる。 if 文の短絡評価でもなんでも利用できるものは何でも利用して、一行一文字でも短縮したくなる瞬間は、誰にでもあるんじゃないかと思う。……無いですかそうですか。
けれど、やはり短ければ良いというものでも無くて、ぱっと見コードを読んだ人間に勘違いをさせてしまうようなコードはよろしくないのではないかとも最近は思うようになってきたのだけど、その辺りの境界線がいまひとつはっきりしなくて悩んでいる今日この頃です。
ほんとうに誰にでも読めるコードを書こうとすると今度はかえって読むのに時間がかかるものにもなってしまいかねないし。
ちなみに上のコードは次のようなコードと同じ意味です。
// チェックするかどうかまず確認 if(bCheck) { // チェックフラグが立っている場合、チェックする if(!Check()) { // チェックの結果駄目だったら終わり return; } }
普通に書くと冗長になりすぎて嫌なんですよね。ちょうどいい落とし所というのを、見つけられればいいのですが。最近は書いたコードが下手にトリッキーにならないよう抑え気味にしているつもりですが、それでも「読めない」という意見があるし……。