photo credit: ryanoshea via photopin cc
はじめに
先日、職場の若手エンジニアの人たちと話す機会があって、「こんなコードは嫌だ!」という話題になりました。
彼らには、現存するソースコードを読んでもらい、そこから設計書をリバースで書き起こす仕事をしてもらっています。日々大量のコードを読む中で「こんなコードは嫌だ!」と感じる点を語ってもらいました。
リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)
posted with amazlet at 14.03.22
Dustin Boswell Trevor Foucher
オライリージャパン
売り上げランキング: 1,424
オライリージャパン
売り上げランキング: 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点ほど取り上げました。
これ以外にも、ソースコードのインデントは最低限揃えてほしいという意見があり、それに関してはその場にいた全員が同意していました。