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

Simple Factoryパターンについて

今回はデザインパターンの一種であるSimple Factoryパターンに関して。 Contents1 Simple Factoryパターンとは2 サンプルコード3 解説 Simple Factoryパ …

no image

webの仕組み その1 Webの基本的なイメージ

Webの仕組みについて基礎からちょっと勉強しようかと。自分用なのでまとまってません(爆) Contents1 Webの基本的なイメージ2 HTTPメソッド Webの基本的なイメージ ネットワーク上のリ …

no image

エディタatomについて

今までのエディタですが、 gvim eclipse をメインに使ってました(PHPでは)。 エディタとか一旦なれるとなかなか変えにくいのでずっと上記のままでいこうと思ったんですが、今の現場でatomを …

no image

phing

今までphpunit,phpmd,phpcodesniffer,phpdocumentなどのツールをいろいろと試してきますが、個別に動かしていると大変面倒ですので、これを一気に行えるライブラリがありま …

no image

例外処理に関して

いまいち使い方がいい加減だった例外処理について、復習がてらメモします。 昔のリンクを整理して出てきた例外リンクはこちら(Javaですが今のPHPにも当てはまるかと思います。) 例外処理について 例外処 …

アーカイブ