質問するログイン新規登録

回答編集履歴

1

追記

2017/10/31 01:05

投稿

masaya_ohashi
masaya_ohashi

スコア9210

answer CHANGED
@@ -30,4 +30,20 @@
30
30
  console.log("checkがtrueのときの処理1");
31
31
  }
32
32
  console.log("checkがtrueのときの処理2"); // ifの影響を受けない
33
- ```
33
+ ```
34
+
35
+ 私は「省略if」の存在を許せないタイプです。なぜなら「うっかり処理を挟むと意図しない動作になるから」です。例えば元々以下のコードで正しく動いていたコードがあったとします。
36
+ ```JavaScript
37
+ if(check)
38
+ console.log("checkがtrueのときの処理1");
39
+ console.log("共通処理");
40
+ ```
41
+ しかし、後日「あ、そうだcheckがtrueのときは事前にもう1個処理が必要だわ」となったとき、こう加えたとします。
42
+ ```JavaScript
43
+ if(check)
44
+ console.log("checkがtrueのときの処理0");
45
+ console.log("checkがtrueのときの処理1");
46
+ console.log("共通処理");
47
+ ```
48
+ そして、checkをtrueにして動作テストしてみたところちゃんと処理0が実行されたのを見て満足します。すると、後日「checkがfalseなのに処理1が走ってるんだけどどうなってんの?」とバグ報告が上がります。1行ifを使っていると「ふとした拍子に処理を追加したときにバグを埋め込む可能性がある」ということです。しかし、ちゃんとブロックで囲っていればこんな事故は起きません。
49
+ **たった2文字のタイピングをケチるためにこのようなバグを埋め込みかねないコード**、私は親の敵ぐらい嫌いです。ちなみに1行forを書くことも同じことなので嫌いです。