回答編集履歴

1

可読性

2020/10/03 21:43

投稿

think49
think49

スコア18189

test CHANGED
@@ -92,4 +92,84 @@
92
92
 
93
93
 
94
94
 
95
+ ### 可読性
96
+
97
+
98
+
99
+ > 私の書いたコードなんですが、読みにくいでしょうか?
100
+
101
+
102
+
103
+ 気になったのはコードではなく、条件「reduceを用いること」の方です。
104
+
105
+ 質問文のコードなら、文字列が対象なのでmapは使えず、reduceを使いますが、
106
+
107
+
108
+
109
+ 1. reduce後に最後のカンマを取り除く
110
+
111
+ 2. indexが最後なら、カンマを出力しない (毎回、indexを検査するのでパフォーマンス低下)
112
+
113
+ 3. array#shift()で最初の要素だけ別途処理してから、reduceする
114
+
115
+
116
+
117
+ の対策が必要となりますので、どれを採用するかを踏まえて吟味する必要があります。
118
+
119
+ 個人的には**可読性は使ったコードにどれだけ熟知しているか次第**だと思うので、言及しません。
120
+
121
+
122
+
123
+ ただ、「一つの文字列を結合して増やしていく方法」は「配列からmap->joinする方法」と比較して、**パフォーマンスに優れるメリット**があります。
124
+
125
+ パフォーマンスを優先させるポリシーでコードを書くなら、私は `while` or `for` を使いたくなります。
126
+
127
+
128
+
129
+ ```JavaScript
130
+
131
+ function sample (array) {
132
+
133
+ if (!array.length) return '{}';
134
+
135
+ const value = array[0];
136
+
137
+ let body = '{' + value + ':' + value + '0';
138
+
139
+
140
+
141
+ for (let i = 1, len = array.length; i < len; ++i) {
142
+
143
+ const value = array[i];
144
+
145
+ body += ',' + value + ':""' + value + '0"';
146
+
147
+ }
148
+
149
+
150
+
151
+ return body + '}';
152
+
153
+ }
154
+
155
+
156
+
157
+ const array = ["a", "b"];
158
+
159
+ console.log(sample(array));
160
+
161
+ ```
162
+
163
+
164
+
165
+ 結局、コードの良し悪しは「自分がコードに何を求めるか」次第です。
166
+
167
+ 言い換えるなら、**何を目的として「reduceを用いること」を条件に指定したのか**です。
168
+
169
+ そこが読み取れませんでした。
170
+
171
+ 背景もなしに条件が明示されたので、条件に意味はない「課題のコード」のように思いました。
172
+
173
+
174
+
95
175
  Re: ah6BD2gZo5GnjnT さん