Pocket

for文やwhile文では、波カッコ"{}"を省略したり、1行で書いたりすることは見かけなくなりました。

ところが、if文では、波カッコを省略して、1行で書いていることを多く見かけます。nullチェックreturn、です。世間的にも許容されているように思います。

それでは、次のようなコードはどうでしょうか。これぐらい問題ないように思いますが、波カッコをつけて、3行に書くことをおすすめします。

1行のif文には、問題点が3つあります。

(1)ブレークポイント

この行にブレークポイントを設定すると、(1)条件式で止まってから(2)本体で止まる、2段階になってしまいます。

条件が成立しても、トレース行は同じ行にとどまっています。条件成立して本体に移動しているのか、わかりにくいです。

また、条件式が成立しないときも、この行で止まってしまうので、結局3行に分けてから、デバッグすることも多いです。

(2)コミット履歴

ログの1行を追加したとき、gitのコミットログに大げさな履歴が残ってしまいます。

(3)if文は本来複雑

if文は本来複雑なので、簡潔に見せないほうがいいと思います。

if文は(1)条件判断(2)条件が成立したとき実行する文、の2つから構成されています。簡単な1行に見えても、2行以上の複雑さを含んでいるんですね。

1行でひっそりしているより、3行を占有して、ここはif文だぞ、と注目を集めたほうがいいと思うんです。

複数の文をセミコロンで並べて、1行に書くのは見かけなくなりました。1行1文です。それと同じ理由で、条件式と本体は、別の行にすることをおすすめします。

nullチェック

それでは、1行で書いてもいい、1行で書いてはいけない、の境界はどこでしょうか。

その判断が面倒なので、nullチェックでreturnも、波カッコをつけて3行で書いています。

複数のnullチェック

ところが、複数のnullチェックをすることも多いですよね。それぞれに波カッコをつけて3行で書くと、本来の処理が、どんどん下に遠ざかってしまいます。そんなときは、nullチェックを別メソッドにしてしまいましょう。

似たif文の並び

nullチェックreturnの他にも、似たようなif文が並んでいるのを見かけます。波カッコをつけて、3行にしましょう。その上で、行数が長くなったな、どうも読みづらいなと感じたら、複雑さが高くなっています。リファクタをしましょう。