こう書いてる人がいたので
PHP
1if($id) { 2 return false; 3} 4retrun true;
else句入れてくださいってコメントしたら
else句つける派とつけない派ができてしまって
PHP
1if($id) { 2 return false; 3} else { 4 return true; 5}
2つの分岐が対になってるかんじがあった方が見やすいかなと思ったのですが、else句をつけない人が多いようで
PSRとかも改めて見たのですが特に言及されてることもなく、結局は好みの問題になるんでしょうか?
でもやっぱり両方が等しく起こり得ることならelse句つけた方がいいと思うのですが普通どうなんでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答6件
0
ベストアンサー
むしろ、「単にreturn
するだけのif
文」は1行で書いて、あとにインデントを残さない、という方が主流です(「ガード節」という名前までついている書き方です)。
php
1function some_func($arr) { 2 if(!is_array($arr)) return null; 3 if(empty($arr['foo'])) return null; 4 // チェックを済ませた上で、本題の処理を書き始める(後略) 5}
投稿2017/04/11 04:18
総合スコア146543
0
私は、どっちでも良いと思います。
というのも適切に短いメソッドであれば、読み間違える心配がないからです。強制して宗教論争をしてもメリットがあるようには思えません。強制をしないという合意を作った方がいいくらいだと思います。
(逆に、スパゲッティなコードであれば、細かい点まで共通化する意義があります。)
とはいえ、もしこれがガード節であれば、ネストを浅くするためにelseは不要だと思います。
return ! $id;
ちなみに私だっだら質問のコードであれば、このくらいの荒っぽいコードで書きます。elseを書くと5行これだと1行、長いコードよりも短いコードが読みやすいという考えからです。
メソッド名が適切であれば特に問題にはならないとかんがえます。その代り、1行であってもメソッドに分割することは多いです。
投稿2017/04/11 05:04
総合スコア2884
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
可読性に言及すると人それぞれと言われそうですが、
スッキリさせるためにはelse句は要らないのではと思います。
また、コード変更の際に if ($id){}以降にコードを追加したとすると、
else句内のreturn true;を見落としてその後のコードが絶対に通らないなんて不具合も起きえます。
さらにはifの条件を複数にする場合、全ての条件を一つのif文に書かなければならなくなるので
if文条件の可読性が下がる場合があります。
PHP
1// これはできるが 2if($id && $name && $data) { 3 return false; 4} else { 5 return true; 6}
PHP
1// これはできない 2if($id) { 3 return false; 4} else { 5 return true; 6} 7if($name) { 8 return false; 9} else { 10 return true; 11} 12if($data) { 13 return false; 14} else { 15 return true; 16} 17
PHP
1// returnが最後なら綺麗 2if($id) { 3 return false; 4} 5if($name) { 6 return false; 7} 8if($data) { 9 return false; 10} 11return true;
上記の条件はシンプルなので1つのif文でもいいですが・・・
一番上のソースだと、どの条件に引っかかったのかログを出す場合にも苦労しそうですよね
投稿2017/04/11 04:26
編集2017/04/11 04:28総合スコア883
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
elseを付けるとその次の行に到達しなくなるのが気持ち悪いので、私はまず使わないですね。
PHP
1 if($id) { 2 return false; 3 } else { 4 return true; 5 } 6 // ここに到達しない 7}
なのでこういう風に書くことは良くあります。
PHP
1 $ret = true; 2 if($id) { 3 $ret = false; 4 } 5 return $ret; 6}
しかし一番好みなのはmaisumakunさん回答の方法ですね。
名前がついているのは知りませんでしたが。
投稿2017/04/11 05:36
総合スコア17000
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
基本的にmaisumakunさんのやり方に賛成ですし
個人的にもほとんどそれでしかコーディングしていませんが
関数を途中で終わらすのが気持ち悪いと思う人もいるでしょうし
プロジェクトによって方針も違うので参考程度に
returnは1度しか発行しないという考え方もあります
PHP
1function myfunc(){ 2ret=true; 3if(条件式){ 4ret=false; 5} 6return ret; 7}
ただ、早々に除外されるようなものもその関数の最後まで処理を追いかける分
非効率だというデメリットはあります。
投稿2017/04/11 05:05
総合スコア117648
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

0
むしろ、自分のつかっているjetbrainのIDEだと、一行で書けるよって忠告が表示されます。
投稿2017/05/16 02:20

退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/04/11 04:34
2017/04/11 11:47