skillup

技術ブログ

プログラミング全般

制御フローについて

投稿日:

リーダブルコード 7章。制御フロー(if文などの条件分岐)について

ここらへんは個人個人癖がついているとおもいますが、確かに読みやすい、読みにくいというのはあるのでなるべく汎用性のある規則を身につけたいと思います。

条件式の並び方

具体的に読みやすいコードと読みにくいコードを列挙して見ます。

一般的に条件式では

左 変化する値。比較する側の値

右 あまり変化しない値。比較される側の値

の形が一番自然のようです。おそらく人間の頭の構造がそうなっているんでしょうね。・・

ifelseの並び方

  1. 条件は否定より肯定系を使う。if(!debug)よりはif(debug)にする
  2. 単純な条件を先に書く
  3. 関心を引く条件や目立つ条件を先に書く

1は納得。例外としては否定形のほうが一般的なパターンですかね。

例えばPHPの空白条件なんかは下記のようなときに使われることのほうがおおいでしょう。

2,3は確かに衝突することのほうが多いかも。要は頭を疲れさせない並び方にするのがポイントってことでしょうか。

三項演算子

自分が初期のころそうだったんですが行数を短くすることにこだわりすぎてて、無理やり三項演算子を使ってました。コードを読みやすくするのが目的なので意味なく使うと当然読みにくくなります。

三項演算子が一番有効なのは変数が空かどうかをチェックする(あるいはそれに近い)パターンでしょう。短くすることが自己目的化して使いすぎないほうがいいですね。

do while ,go toを使わない

あまり推奨される記述方法ではないようです。自分は元々ほとんど使ってません。

関数は結果を早く返す

ポイントとしては例外的な条件だったり、いらない条件をなるべく早めに除外してしまおうということですね。

これらを同一のif文の中に入れておくとネストが複数になり、複雑になって読みにくくなるからでしょう。

ネストを浅くする

基本ですね。一般的には2段ぐらいが上限かと思います。それ以外は見にくくなるのでメソッド化するか他の手法を考えましょう。

全体を通してポイントとしては流れがおいやすいか、頭に負担をかけないかといったことでしょうね。7割ぐらいは実行できているかな・・・

-プログラミング全般
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

調査スキルについて

本日は実務でとても大切な不具合の発見方法について 通常のプログラマとして仕事をしておりますと、通常の実装よりは不具合時の調査のほうが難しいことが多々あります。 もちろんものによるんですが、経験のある人 …

no image

命名規則について その2

リーダブルコードネタ第3段。 前回のエントリーに引き続き、名称の大切さについて Contents1 あいまいな名前はNG!1.1 限界値はmaxかminを使う1.2 範囲を指定するときはfirstとl …

no image

Eclipseのシンタックスハイライト

先日PCがクラッシュした時にEclipseを入れなおしたんですが、普段あまり意識せずに使っていたのでhtmlのシンタックスハイライトをだすためだけに2時間ぐらい費やしました・・・自戒の意味も込めてメモ …

no image

PCクラッシュ時に備えて

先日、ずっとメインで使っていた会社のノートPCがクラッシュし、再起不能になりました。ファイルなんかはクラウドで管理していたものが多かったので実害はあまりなかったんですが、当然ゼロではありませんでした。 …

no image

アジャイル開発について

エンジニアとして仕事をしてから7〜8年立ちましたが、その間9割近くはいわゆるアジャイル開発でやってきたと思っていました。今は比較的大規模な開発をしておりますので、ウォータフォールですが・・・ が、先日 …