回答編集履歴

2

流れや文章を少しずつ修正しました

2018/02/18 05:20

投稿

miyabi-sun
miyabi-sun

スコア21400

test CHANGED
@@ -14,9 +14,19 @@
14
14
 
15
15
 
16
16
 
17
+ ですが……そのコードは自然でシンプルなのですか?本当に?何を根拠に言ってるの?
18
+
19
+ こういう風に詰められるとだんだん不安になってきますね。
20
+
21
+
22
+
17
23
  どうすれば良いかの勘所は[リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック](https://www.amazon.co.jp/%E3%83%AA%E3%83%BC%E3%83%80%E3%83%96%E3%83%AB%E3%82%B3%E3%83%BC%E3%83%89-%E2%80%95%E3%82%88%E3%82%8A%E8%89%AF%E3%81%84%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E6%9B%B8%E3%81%8F%E3%81%9F%E3%82%81%E3%81%AE%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%A7%E5%AE%9F%E8%B7%B5%E7%9A%84%E3%81%AA%E3%83%86%E3%82%AF%E3%83%8B%E3%83%83%E3%82%AF-Theory-practice-Boswell/dp/4873115655)という書籍を読めば身につきます。
18
24
 
25
+ どんなにロジカル人のコードでもこれを読んでない人のコードは品質がバラツキます。
26
+
19
27
  この書籍を読んだ人のコードはとても読みやすく、共通部品を取り出すとはなんなのかが分かりますので、長いエンジニア人生で一番役に立つ書籍となるだろうと言っても過言ではありません。
28
+
29
+ ただし序盤はともかく終盤は難解ですので、まずは読める範囲までで良いので繰り返し読んでくださいね。
20
30
 
21
31
 
22
32
 
@@ -44,7 +54,7 @@
44
54
 
45
55
 
46
56
 
47
- まず、プログラミングは出来る限り以下の流れを守ってください。
57
+ まず、オブジェクト指向に限らず、プログラミングに於いては以下の流れを守ってください。
48
58
 
49
59
 
50
60
 
@@ -56,33 +66,47 @@
56
66
 
57
67
 
58
68
 
59
- この1〜3の流れは常に全て終わった後に次のフェイズしてください。
69
+ この一連の流れは全て終わるまで、絶対に次へ行かないでください。
60
70
 
61
71
  質問文のコードが「共通・非共通・共通・非共通・共通」の流れになってしまうのは、
62
72
 
63
- 多くのケースに於いて1→3の流れを守れずに小出しにしているからです。
73
+ 殆どのケースに於いて1→3の流れを守れずに小出しにしているからです。
64
74
 
65
75
 
66
76
 
67
- のデータが出揃うまで処理や出力は遅延させようにしてください。
77
+ また「少しの情報を受け取って処理ことを繰り返す」のも、
68
78
 
69
- ただし、こ手順崩さなれば処理速度面で困るケースが発生することりま
79
+ 「全て情報取ってまとめて処理する」の全体的な処理時間は変わりません
70
80
 
71
- 多く場面で1〜3にした位で遅くなる事はありません、その時になって初めて悩んでください。
81
+ 例外が出たらそはその時悩んでください。
82
+
83
+
84
+
85
+ ---
72
86
 
73
87
 
74
88
 
75
89
  次にコードに対して大まかな名前を付けてください。
76
90
 
77
- まずゴール(あるべき姿)はなんですか?そのまま名称にして、クラス名や関数名として利用してください
91
+ まずゴール(あるべき姿)はなんですか?そのまま名称にして、クラス名や関数名として利用できます
78
-
79
- 次に達成条件を箇条書きにしてください。
80
92
 
81
93
 
82
94
 
83
- 達成条件はどんなケースで達成なければならなのでしょうか?
95
+ 達成条件も箇条書きにてくださ
84
96
 
97
+ これらの達成条件も個別に関数名やクラスのメソッド名等に使えます。
98
+
85
- それとも、スイッチをONにした時だけ達成しなければならないのでしょうか?
99
+ また達成条件は「どんなケーでも達成しなければならないのでしょうか?
100
+
101
+ 「スイッチをONにした時だけ達成出来れば良いのですか?」なども予め考えて置くと捗ります。
102
+
103
+
104
+
105
+ ---
106
+
107
+
108
+
109
+ ここでやってオブジェクト指向プログラミングのターンです。
86
110
 
87
111
 
88
112
 
@@ -94,13 +118,13 @@
94
118
 
95
119
 
96
120
 
97
- この流れで統一するようにすれば、
121
+ ---
98
-
99
- 何をまとめられそうか、何をまとめるのが無理そうかが一目で区別出来るようになるでしょう。
100
122
 
101
123
 
102
124
 
103
- ---
125
+ この流れで統一するようにすれば、
126
+
127
+ 何をまとめられそうか、何をまとめるのが無理そうかが一目で区別出来るようになってきます。
104
128
 
105
129
 
106
130
 

1

校正しました

2018/02/18 05:20

投稿

miyabi-sun
miyabi-sun

スコア21400

test CHANGED
@@ -6,29 +6,21 @@
6
6
 
7
7
 
8
8
 
9
- 長ったらしい変なコードの羅列は、何かタイトルを付けてインデックス付きでどっか別の箇所に飛ばしてください。
10
-
11
- これをサブルーチン化、関数化と呼びます。
12
-
13
- 歌詞の「*繰り返し」と同じようなもんです。
14
-
15
-
16
-
17
9
  質問文の共通、非共通と並んでいる箇所ですが、
18
10
 
19
11
  文章として読んだ時にそれが最も自然でシンプルなあるべき姿なのでしょうか?
20
12
 
21
- もしYesと言い切れるのならそれが理想形ですし、Noならもっと良い文章の為に考てください
13
+ もしYesと言い切れるのならる必要はありません
22
14
 
23
15
 
24
16
 
25
- 辺の勘所は[リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック](https://www.amazon.co.jp/%E3%83%AA%E3%83%BC%E3%83%80%E3%83%96%E3%83%AB%E3%82%B3%E3%83%BC%E3%83%89-%E2%80%95%E3%82%88%E3%82%8A%E8%89%AF%E3%81%84%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E6%9B%B8%E3%81%8F%E3%81%9F%E3%82%81%E3%81%AE%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%A7%E5%AE%9F%E8%B7%B5%E7%9A%84%E3%81%AA%E3%83%86%E3%82%AF%E3%83%8B%E3%83%83%E3%82%AF-Theory-practice-Boswell/dp/4873115655)という書籍を読むことで付きます。
17
+ どうすれば良いかの勘所は[リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック](https://www.amazon.co.jp/%E3%83%AA%E3%83%BC%E3%83%80%E3%83%96%E3%83%AB%E3%82%B3%E3%83%BC%E3%83%89-%E2%80%95%E3%82%88%E3%82%8A%E8%89%AF%E3%81%84%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E6%9B%B8%E3%81%8F%E3%81%9F%E3%82%81%E3%81%AE%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%A7%E5%AE%9F%E8%B7%B5%E7%9A%84%E3%81%AA%E3%83%86%E3%82%AF%E3%83%8B%E3%83%83%E3%82%AF-Theory-practice-Boswell/dp/4873115655)という書籍を読めば身につきます。
26
18
 
27
- この書籍の思想引き出した人のコードはとても読みやすく、共通部品を取り出すとはなんなのかという事の真意が分かりますので、長いエンジニア人生で一番役に立つ書籍となるだろうと言っても過言ではありません。
19
+ この書籍を読んだ人のコードはとても読みやすく、共通部品を取り出すとはなんなのかが分かりますので、長いエンジニア人生で一番役に立つ書籍となるだろうと言っても過言ではありません。
28
20
 
29
21
 
30
22
 
31
- --
23
+ ---
32
24
 
33
25
 
34
26
 
@@ -36,13 +28,7 @@
36
28
 
37
29
 
38
30
 
39
- 2軸の別々の事をやるプログラムに対して、
40
-
41
- 共通化できそうな所を上手く抽出するのがプログラミングや設計の腕の見せどころです。
42
-
43
-
44
-
45
- その視点で質問文を見返すと、「共通・非共通・共通・非共通・共通」となってますね。
31
+ 質問文を見返すと、「共通・非共通・共通・非共通・共通」となってますね。
46
32
 
47
33
  1行1行の処理に着目しすぎのように思えます。
48
34
 
@@ -62,27 +48,33 @@
62
48
 
63
49
 
64
50
 
65
- 1. 入力(必要な情報の収集)
51
+ 1. 入力(必要な情報の収集) + 加工(入力値を処理しやすくする)
66
52
 
67
- 2. 加工(入力値を処理しやすくする)
53
+ 2. 処理
68
54
 
69
- 3. 処理
70
-
71
- 4. 出力(結果を画面なりファイルなりへ書き出す)
55
+ 3. 出力(結果を画面なりファイルなりへ書き出す)
72
56
 
73
57
 
74
58
 
59
+ この1〜3の流れは常に全て終わった後に次のフェイズへ移行してください。
60
+
75
61
  質問文のコードが「共通・非共通・共通・非共通・共通」の流れになってしまうのは、
76
62
 
77
- 多くのケースに於いて1→4の流れを守れずに小出しにしているからです。
63
+ 多くのケースに於いて1→3の流れを守れずに小出しにしているからです。
64
+
65
+
78
66
 
79
67
  全てのデータが出揃うまで処理や出力は遅延させるようにしてください。
80
68
 
69
+ ただし、この手順を崩さなければ処理速度面で困るケースが発生することもあります。
70
+
71
+ 多くの場面では1〜3にした位で遅くなる事はありません、その時になって初めて悩んでください。
81
72
 
82
73
 
83
- 次にコードには名前を付けてください。
84
74
 
75
+ 次にコードに対して大まかな名前を付けてください。
76
+
85
- まずゴールはなんですか?
77
+ まずゴール(あるべき姿)はなんですか?そのまま名称にして、クラス名や関数名として利用してください。
86
78
 
87
79
  次に達成条件を箇条書きにしてください。
88
80
 
@@ -94,15 +86,25 @@
94
86
 
95
87
 
96
88
 
97
- めて加工が済んだら処理に必要なデータを、クラスに投げ込んでインスタンスを作ってください。
89
+ 情報の収加工が済んだら処理に必要なデータを、クラスに投げ込んでインスタンスを作ってください。
98
90
 
99
91
  別の処理を挟みたいなら、オプショナルな条件のメソッドを用意してONにするようにしてください。
100
92
 
101
- 全てのデータを投げ込み終わったら、作ったインスタンスのstartメソッドを叩いて結果を待
93
+ 全てのデータを投げ込み終わったら、作ったインスタンスのstartメソッドを叩いて結果を待ちましょう
102
94
 
103
95
 
104
96
 
97
+ この流れで統一するようにすれば、
98
+
99
+ 何をまとめられそうか、何をまとめるのが無理そうかが一目で区別出来るようになるでしょう。
100
+
101
+
102
+
103
+ ---
104
+
105
+
106
+
105
- 最初は何千行もの神クラスを作り込んだりして酷いコードになるでしょうけど、
107
+ 最初は何千行もの神クラスを作り込んだりして酷いコードになると思います。
106
108
 
107
109
  [オブジェクト指向プログラミング](https://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91)の腕が上がってくれば、比例して読みやすく抽象化された素晴らしいコードが書けるようになるはずです。
108
110