例えば変数hogeが10以上の場合は処理A、それ以外の場合は処理Bという条件分岐をコーディングするときに
以下のパターン1、パターン2のどちらの書き方の方がいいのでしょうか?
理由も含めて教えていただきたいです。
■パターン1
if hoge >= 10 処理A else if hoge < 10 処理B
■パターン2
if hoge >= 10 処理A else 処理B
それとも詳細設計書の記述に以下のように合わせるべきでしょうか?
・10以上の場合は処理A、10より小さい場合は処理B ならば パターン1
・10以上の場合は処理A、それ以外の場合は処理B ならば パターン2
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答6件
0
「hoge
が数値型」という一般的な条件であれば、条件式を2回書かなくてもいいパターン2のほうがいいでしょう(何かで条件の値を書き換える場合に、パターン2では両方書き換えないといけなくなります)。
もし、、たとえばSQLのUNKNOWN
のような、「hoge >= 10
でもhoge < 10
でもない状態」が成立しうるのであれば、両者は意味が違いますので、書き分ける必要があります。
投稿2018/05/14 00:13
総合スコア145121
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/14 03:59
2018/05/14 10:12
0
基本はパターン2 でしょう。
パターン1 も良く見ますが、紛らわしいです。
最後が else (単独)になっていないので、その他があるか一瞬、考えます。
後から、読む人を混乱させる記述だと思っています。
実行的には、コンパイラの最適化で消える可能性もありますが、そのまま、コンパイルされた場合、無駄な条件判定が入る可能性もあります。
投稿2018/05/13 22:55
総合スコア6383
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/13 23:00
2018/05/14 02:03
2018/05/14 10:09
0
私は以下のようなコードを良く書きます。(今回のパターンだとバカバカしく見えますが。。。)
条件が複雑な時に、意図する処理と想定外の振る舞いが後から見てわかりやすいからです。
if hoge >= 10 処理A else if hoge < 10 処理B else 異常系処理 もしくはログに何か出力する
投稿2018/05/14 03:54
総合スコア136
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/14 04:51 編集
2018/05/14 04:57
2018/05/14 04:58
2018/05/14 10:15
2018/05/14 10:17
2018/05/15 00:20
0
二分岐でしかないなら、else if は使いません。仮に詳細設計書が
「10以上の場合は処理A、10より小さい場合は処理B」
などと書いているなら、そもそも詳細設計書を書き直させますね(w
例えばですが、これが指が滑って「10以上の場合は処理A、1より小さい場合は処理B」などと書かれて、そのまま実装されたら(世の中には文字通りに「設計書の通りに」しかコーディングしない人はいるのです。そもそもその設計書に不備があるとか考えない人が)洒落になりません。
投稿2018/05/14 01:59
総合スコア13703
0
ベストアンサー
else if
を書いたならばelse
をなるべく書くべき。
switch
を書いたならばdefault
をなるべく書くべき。
else
のないif ~ else if
は何か漏れてる臭いがする。
2択であるならば、else if
を使う意味はなく、パターン2でしょう。
10以上の場合は処理A、10より小さい場合は処理B
10以上の場合は処理A、それ以外の場合は処理B
どちらも2択のことを言っているので、設計書の表現に関わらずパターン2にした方がいいと思います。
投稿2018/05/14 01:51
編集2018/05/14 01:52総合スコア4666
0
個人的にパターン1はなんかきもちわるい印象かなあ。
「例えば変数hogeが10以上の場合は処理A、それ以外の場合は処理Bという条件分岐をコーディング」
を素直に実装したらパターン2になると思います。
あと、条件が増えた場合にパターン1はバグりやすい気がする。
ちなみに、コーディング規約みたいなんはないのでしょうか?
投稿2018/05/13 23:53
総合スコア7458
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。