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

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

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

no image

ログのまとめに関して

何回か書いたログの設計方針に関して再度復習。 ログ設計指針について ログで大事なことを再度復習 DEBUG(SQLやパラメータ情報など詳細な情報までだす)、INFO(メソッドの詳細情報、開始と終了)、 …

no image

トークン認証に関して

Contents1 トークンでの認証2 Laravelでのtoken トークンでの認証 APIアプリケーションを作る場合、認証方式としてはクッキーとセッションを利用したものよりもトークンを使った認証方 …

no image

CIことはじめ

業務でJavaのテキスト変換ツールを作成。 プログラムよりもCIツールを使って他人の環境下で正常に稼動させるためにどうするかの調査に時間かかりましたね。 今回やりたかったことは下記の通りです。いわゆる …

no image

メモリに関して 静的領域、スタック、ヒープなど

実務でメモリの調査をしましたが、肝心のメモリについてほとんどわかっていないのでメモ。 メモリの領域を大きく分けると静的、スタック、ヒープに別れる。 Contents1 静的2 スタック3 ヒープ4 そ …