-
1:ID:JUvtFp · 2019-02-19

#php 条件分岐についてアンケート的な質問です。
以下の条件分岐では、同じ動きをすると思うのですが、皆さんはどちら派でしょうか?

function hoge(){
if( $login === 'login' ){
echo 'こっちが一般的ですか?';
}
}

function hoge2(){
if( $login !== 'login' ){
return;
}
echo 'こっちが一般的ですか?';
}
}

{}が深くなりすぎるのが嫌なので、後者を使うのもいいかなと思ったのですが、皆さんはどちら派でしょうか。
宜しくお願い致します。

22 件の回答

2:ID:BSbjur · 2019-02-20

前者。インタプリタの特性上、前者の方が処理が軽い。

3:ID:XREsfo · 2019-02-20

hoge2()。一般に if() の外の処理が多くなるので、インデントを減らしたい。

4:ID:ptrtjP · 2019-02-20

これは議論不要で後者。
どっち派とかでなく、リーダブルコード等読めば当然の考え方だとわかるから脱初心者したいなら読むべし

5:ID:ptrtjP · 2019-02-20

Re:2
入力される値が固定ならね。

6:ID:1LkpHy · 2019-02-20

$loginが引数として渡ってきてない・・・

7:ID:BSbjur · 2019-02-20

Re:5
いや可変でも一緒でしょうに

8:ID:CEiKuP · 2019-02-20

ガード節という考え方ですね。
比較値が異状だった場合に、それ以降の処理を行わない。
ような動きの場合に、私は率先して使います。
ループ内での判定でも同様にContinueを使ったりします。
主に人にとって優しいわかりやすい書き方だと思います。
よほどの大量データ処理じゃない限り、前者後者で
処理速度の違いが顕著になることはないので
スマートだと感じるほうでコーディングされると良いと思います。

9:ID:ptrtjP · 2019-02-20

ここはウェブ系なのでオブジェクト指向、可読性、保守性を高めるコードが正だよ。
組込のCならメモリの選択肢は幅があるので除外する。
正常系はコードの最後に処理する。
パブリックな所で、タイプヒントやサニタイズ、バリデーションして、そこから間違いのない正常系処理することが汎用的で人間に優しいし、一般常識。

10:ID:BSbjur · 2019-02-20

Re:9
例外処理書いたことない人か

11:ID:ptrtjP · 2019-02-20

Re:10
何でも例外投げるアホか?

12:ID:BSbjur · 2019-02-21

Re:11
自分が正しく、他人には罵倒することでしか接することができない人か

13:ID:CEiKuP · 2019-02-21

Re:10
気になるので横から失礼します。
あなたの言う例外というのはExceptionのこと?
Exceptionであれば、質問のようなif文で防いだり、投げたり、判定することは
行わないと思うんだけど。(catchした後での判定ならば別だけど)
どういうケースを例外と言っているんでしょう?
仮にそうではなく、正常処理を行わないこと=例外というならば、
※主の方が言うように、処理対象じゃないデータは前段ではじいて、
その後に正常系の処理を書ききるのが可読性の高いコードだと思う。

14:ID:BSbjur · 2019-02-21

Re:13
> あなたの言う例外というのはExceptionのこと?
です。

> Exceptionであれば、質問のようなif文で防いだり、投げたり、判定することは
> 行わないと思うんだけど。(catchした後での判定ならば別だけど)
おっしゃる通り。スレ主の掲げるif云々ではなく、9の書きこみそのものについてレスしただけ。

主題から外れているというご指摘ならごもっともではあるけど、正常系処理を最後に書くのがセオリーでそれ以外はすべて論外であるかのように論じられるのは我慢ならん。相手(スレ主)が初心者であればなおさら。

15:ID:CEiKuP · 2019-02-22

Re:14
丁寧にありがとう。
私的には論外とまでは思ってないけど、そう思わせてしまったなら申し訳ないです。
自分がプログラミングするときに、1機能=1メソッド(ファンクション)で書いたり、
1メソッドを3,40ステップ以内に収めるのを目標にしているので、
必然的にその機能が持つ正しい動きしか書かなくなっていたために、
自身の論調(正常系しか書かない)になっていました。ごめんなさい。

訳も分からず、正常系しか書いちゃダメなんだ、それ以外は悪手なんだ
と思ってコーディングするよりも、自然とオブジェクト指向をもとに
洗練されていくほうが良いですね。

16:ID:FRDZ7v · 2019-02-22

Re:14
論破されたらしれっと言い訳は恥ずかしいね

20:ID:Qgz8np · 2019-02-22

勝ち負けじゃなくより良くなるための議論なんじゃないの?Re:16

21:ID:BSbjur · 2019-02-22

Re:16
論破とか言い訳とか何を言ってるのこの人

22:ID:FRDZ7v · 2019-02-22

なんか変なの暴れてるけど、if文で無駄に例外を出してくるトンチンカンな人はまだいるの?
まず本を読もうよ。

23:ID:gIw3WY · 2019-02-22

Re:22
君は本を読む前に「流れ」と「空気」を読むべきだね

3 件の回答が除外されました。[詳細]
コメントの受付は終了しました。

一緒に読まれている質問

ページ上部に戻る