回答編集履歴

1

追記

2017/10/31 01:05

投稿

masaya_ohashi
masaya_ohashi

スコア9206

test CHANGED
@@ -63,3 +63,35 @@
63
63
  console.log("checkがtrueのときの処理2"); // ifの影響を受けない
64
64
 
65
65
  ```
66
+
67
+
68
+
69
+ 私は「省略if」の存在を許せないタイプです。なぜなら「うっかり処理を挟むと意図しない動作になるから」です。例えば元々以下のコードで正しく動いていたコードがあったとします。
70
+
71
+ ```JavaScript
72
+
73
+ if(check)
74
+
75
+ console.log("checkがtrueのときの処理1");
76
+
77
+ console.log("共通処理");
78
+
79
+ ```
80
+
81
+ しかし、後日「あ、そうだcheckがtrueのときは事前にもう1個処理が必要だわ」となったとき、こう加えたとします。
82
+
83
+ ```JavaScript
84
+
85
+ if(check)
86
+
87
+ console.log("checkがtrueのときの処理0");
88
+
89
+ console.log("checkがtrueのときの処理1");
90
+
91
+ console.log("共通処理");
92
+
93
+ ```
94
+
95
+ そして、checkをtrueにして動作テストしてみたところちゃんと処理0が実行されたのを見て満足します。すると、後日「checkがfalseなのに処理1が走ってるんだけどどうなってんの?」とバグ報告が上がります。1行ifを使っていると「ふとした拍子に処理を追加したときにバグを埋め込む可能性がある」ということです。しかし、ちゃんとブロックで囲っていればこんな事故は起きません。
96
+
97
+ **たった2文字のタイピングをケチるためにこのようなバグを埋め込みかねないコード**、私は親の敵ぐらい嫌いです。ちなみに1行forを書くことも同じことなので嫌いです。