小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


若手エンジニアに聞いた「こんなコードは嫌だ!」

f:id:replication:20140322223238p:plain
photo credit: ryanoshea via photopin cc

はじめに

先日、職場の若手エンジニアの人たちと話す機会があって、「こんなコードは嫌だ!」という話題になりました。
彼らには、現存するソースコードを読んでもらい、そこから設計書をリバースで書き起こす仕事をしてもらっています。日々大量のコードを読む中で「こんなコードは嫌だ!」と感じる点を語ってもらいました。

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)
Dustin Boswell Trevor Foucher
オライリージャパン
売り上げランキング: 1,424

1.コードを読めば分かるコメント

たとえば、以下のようなコードです。

// xxフラグが1の場合
if (xxflag == 1)
{
  // 処理A
}

xxフラグが1の場合に処理が実行されるというのは、コードを読めば分かります。本当にコメントとして残してほしいのは、"xxフラグが1になるときっていうのはどういう時なのか"です。コードを日本語に書き直しただけのコメントでは、作成者の意図が伝わりません。

2.trueケースがないif文

たとえば、以下のようなコードです。

if (xxflag == 1 && xxflag == 2) { }
else {
  //処理A
}

ぱっと見、if文内の条件がtrueの場合かと思いきや、否定かよ!と思う誤解を生むコードです。
何も処理をしないのであれば、せめて空行でも入れておいてほしいです。

if (xxflag == 1 && xxflag == 2) {
 // NOP
}
else {
  //処理A
}
3.三項演算子はやっぱり分かりづらい

三項演算子は、if文を使わずにif文と同じような条件分岐を行うことができる構文です。

(x >= 0)?  x : -x)

三項演算子は、コードが短くなるというメリットがありますが、直感的にわかりにくいというデメリットがあると思います。
三項演算子は多用されると読みにくくなる、というのが若手エンジニアの意見でした。

おわりに

「こんなコードは嫌だ」という内容を3点ほど取り上げました。
これ以外にも、ソースコードのインデントは最低限揃えてほしいという意見があり、それに関してはその場にいた全員が同意していました。