回答編集履歴

3

コメントの内容を回答文に反映

2017/10/13 08:18

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -1,6 +1,14 @@
1
- 関数xがガッツリ変数aに依存している場合は、関数x内で止めれば良いです。
1
+ もし関数xがガッツリ変数aに依存している場合は、
2
2
 
3
- 従って2択。
3
+ 関数x内で止めれば良く、2は有力な選肢かと思います
4
+
5
+
6
+
7
+ しかし、関数xは変数aの値によらず動作可能であれば2はありえません。
8
+
9
+ 何の関係もない変数aが横から出てきて、関数xの動作をせき止めるのは、
10
+
11
+ 関数xの挙動や可能性が大幅に制限され、実行すべき所で実行出来なくなる危険があります。
4
12
 
5
13
 
6
14
 
@@ -8,35 +16,27 @@
8
16
 
9
17
 
10
18
 
11
- しかし、こうして質問文に上がってくるということ
19
+ 私の考え1寄りですね。
12
20
 
13
- 関数x変数aの挙動によらず動作しても問題ない関数なのは?
21
+ mainは関数x実行前に変数aを確認しておくべきしょう。
14
22
 
15
- 場合1一択しょう
23
+ 信号を見もせずに横断歩道を渡り始め、クラクションを鳴らされ慌てて戻るようなものですからね
16
24
 
17
25
 
18
26
 
19
- 場合、関数x実行前に変数aを確認しておくべきで、
27
+ コードリーディング時も
20
28
 
29
+ 関数xにジャンプしにいって読みに行ったものの、
30
+
21
- 2場合、信号を見もずに横断歩道を渡り始、クラクションを鳴ててようものです。
31
+ 最初行で変数aにき止められて何も動作せずに戻っことにります。
32
+
33
+ 読みに行かなきゃよかった。
22
34
 
23
35
 
24
36
 
25
- また、ソース追う側もmainからスタートし
37
+ 意味のない往復やることになるので
26
38
 
27
- 関数xを呼んでいるのでそちらを確認しにいき、
28
-
29
- 最初の行でaでせき止められて何も動作せずに戻って…これは`if (a) x();`程度で済むならmainに書いてあった方が可読性も高いです。
39
+ `if (a) x();`程度で済むならmainにif文を書いた方が可読性が上がる可能性あります。
30
-
31
-
32
-
33
- 更に関数の中身はやることや見るべき箇所が少なければ少ないほど、
34
-
35
- 他のモジュールと組み合わせて動かしやすいものになります。
36
-
37
-
38
-
39
- …とまぁ、様々な状況を考慮すると1が良いでしょうね。
40
40
 
41
41
 
42
42
 
@@ -44,13 +44,27 @@
44
44
 
45
45
 
46
46
 
47
- と言って1頻度次第では憂鬱になるかと思います。
47
+ し、2の思想の設計数多くあります。
48
48
 
49
- ここが質問文スタートラインとみました。
49
+ HaskellモナドやJavaScriptライブラリのjQueryでは
50
+
51
+ とりあえず実行してみて、失敗しても安全に着地してくれるという設計で作られています。
50
52
 
51
53
 
52
54
 
55
+ これはこれで一貫していて美しいので、
56
+
57
+ 最終的には好みやプロジェクトでの合意に落ち着く問題かと思います。
58
+
59
+
60
+
61
+ ---
62
+
63
+
64
+
65
+ もし1を採用した場合、頻度次第では憂鬱になるかと思います。
66
+
53
- ですで、折衷案を考えました。
67
+ 頻度が多い場合回避策としてこんな手法を考えました。
54
68
 
55
69
 
56
70
 

2

yをtry_xに変更

2017/10/13 08:18

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -12,17 +12,31 @@
12
12
 
13
13
  関数xは変数aの挙動によらず動作しても問題ない関数なのでは?
14
14
 
15
+ その場合1一択でしょう。
16
+
15
17
 
16
18
 
17
19
  その場合、関数x実行前に変数aを確認しておくべきで、
18
20
 
19
- 2の場合、信号を見もせずに横断歩道を渡り始めるようなもので、クラクションを鳴らされ慌てて戻るようなものです。
21
+ 2の場合、信号を見もせずに横断歩道を渡り始め、クラクションを鳴らされ慌てて戻るようなものです。
22
+
23
+
24
+
25
+ また、ソースを追う側もmainからスタートし、
26
+
27
+ 関数xを呼んでいるのでそちらを確認しにいき、
28
+
29
+ 最初の行でaでせき止められて何も動作せずに戻って…これは`if (a) x();`程度で済むならmainに書いてあった方が可読性も高いです。
20
30
 
21
31
 
22
32
 
23
33
  更に関数の中身はやることや見るべき箇所が少なければ少ないほど、
24
34
 
25
35
  他のモジュールと組み合わせて動かしやすいものになります。
36
+
37
+
38
+
39
+ …とまぁ、様々な状況を考慮すると1が良いでしょうね。
26
40
 
27
41
 
28
42
 
@@ -46,13 +60,13 @@
46
60
 
47
61
  {
48
62
 
49
- y();
63
+ try_x();
50
64
 
51
65
  }
52
66
 
53
67
 
54
68
 
55
- y ()
69
+ try_x ()
56
70
 
57
71
  {
58
72
 
@@ -74,6 +88,6 @@
74
88
 
75
89
 
76
90
 
77
- 関数xをラッピングし、変数aの顔色を伺う関数yを登場させます。
91
+ 関数xをラッピングし、変数aの顔色を伺う関数try_xを登場させます。
78
92
 
79
93
  こうすることで、関数xはシンプルに保たれますし、mainもとりあえず関数xを呼んでみるという使い方ができるようになります。

1

文章校正

2017/10/13 07:52

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -1,8 +1,6 @@
1
- 関数xがガッツリ変数aに依存している場合は、
1
+ 関数xがガッツリ変数aに依存している場合は、関数x内で止めれば良いです。
2
2
 
3
- ガードとして上部に足せば良いでしょう。
4
-
5
- 2一択です
3
+ 従って2一択。
6
4
 
7
5
 
8
6
 
@@ -10,21 +8,35 @@
10
8
 
11
9
 
12
10
 
11
+ しかし、こうして質問文に上がってくるということは、
12
+
13
- ただし、関数xの動きが変数aにあまり依存していない場合2NGとなります。
13
+ 関数x変数aの挙動よらず動作しても問題な関数ので
14
14
 
15
15
 
16
16
 
17
- 関数の内部はやることが少ない方が汎用性が高なります。
17
+ その場合、関数x実行前に変数aを確認しておべきで、
18
18
 
19
- 2を採用すことで、変数aの顔色伺い続け関数にる為かなり用途が限定されます。
19
+ 2の場合、信号見もせずに横断歩道を渡り始めようなもので、クラクション鳴らされ慌てて戻ようものです。
20
20
 
21
+
22
+
21
- 下手すると全く同じような関数を作成す必要生まるかもしれません。
23
+ 更に関数の中身はやことや見るべき箇所少なけば少ないほど、
24
+
25
+ 他のモジュールと組み合わせて動かしやすいものになります。
26
+
27
+
28
+
29
+ ---
22
30
 
23
31
 
24
32
 
25
33
  かと言って1も頻度次第では憂鬱になるかと思います。
26
34
 
35
+ ここが質問文のスタートラインとみました。
36
+
37
+
38
+
27
- 場合、折衷案を採用てはどうでしょうか?
39
+ です、折衷案を考えまた。
28
40
 
29
41
 
30
42