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

フレームワークのマイナーバージョンチェンジの影響に関して

ここ1年ぐらいPHPのフレームワークはLaravelを使っていますが、マイナーバージョンの影響に悩まされることがたまにあります。 以前、遭遇した事象としてはログイン連携が急にできなくなりました。 La …

no image

ポート解放(CentOS7)

新サーバー構築をしていたときにwebサーバーとしてnginxを立てましたが、外部から接続ができません。 500エラーすら吐かれず、ログも残っていません。 こんな時はホスト自体にアクセスが届いていない可 …

no image

ログのまとめに関して

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

no image

VSCodeのPluginなど

Vscodeで使っているPluginなど Contents1 基本2 UML3 git4 PHP コードフォーマット5 golang6 CSV整形 基本 Japanese Language Pack …

no image

データ構造の基礎知識 中編 ハッシュ

前回の続きです。 前回は配列、連結リストについて学習したので今回はハッシュについて学習します。 Contents1 ハッシュとは?1.1 メリット1.2 デメリット ハッシュとは? key-value …

アーカイブ