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

回答編集履歴

1

可読性

2020/10/03 21:43

投稿

think49
think49

スコア18196

answer CHANGED
@@ -45,4 +45,44 @@
45
45
  最も、本質問は課題コードで実用性は度外視なのだと思いますが、課題でもある程度の実用性あるコードを書かせて欲しいもので余り良い課題とは思いませんでした。
46
46
  map,joinを使うことを条件に入れるほうが自然な気がしますね。
47
47
 
48
+ ### 可読性
49
+
50
+ > 私の書いたコードなんですが、読みにくいでしょうか?
51
+
52
+ 気になったのはコードではなく、条件「reduceを用いること」の方です。
53
+ 質問文のコードなら、文字列が対象なのでmapは使えず、reduceを使いますが、
54
+
55
+ 1. reduce後に最後のカンマを取り除く
56
+ 2. indexが最後なら、カンマを出力しない (毎回、indexを検査するのでパフォーマンス低下)
57
+ 3. array#shift()で最初の要素だけ別途処理してから、reduceする
58
+
59
+ の対策が必要となりますので、どれを採用するかを踏まえて吟味する必要があります。
60
+ 個人的には**可読性は使ったコードにどれだけ熟知しているか次第**だと思うので、言及しません。
61
+
62
+ ただ、「一つの文字列を結合して増やしていく方法」は「配列からmap->joinする方法」と比較して、**パフォーマンスに優れるメリット**があります。
63
+ パフォーマンスを優先させるポリシーでコードを書くなら、私は `while` or `for` を使いたくなります。
64
+
65
+ ```JavaScript
66
+ function sample (array) {
67
+ if (!array.length) return '{}';
68
+ const value = array[0];
69
+ let body = '{' + value + ':' + value + '0';
70
+
71
+ for (let i = 1, len = array.length; i < len; ++i) {
72
+ const value = array[i];
73
+ body += ',' + value + ':""' + value + '0"';
74
+ }
75
+
76
+ return body + '}';
77
+ }
78
+
79
+ const array = ["a", "b"];
80
+ console.log(sample(array));
81
+ ```
82
+
83
+ 結局、コードの良し悪しは「自分がコードに何を求めるか」次第です。
84
+ 言い換えるなら、**何を目的として「reduceを用いること」を条件に指定したのか**です。
85
+ そこが読み取れませんでした。
86
+ 背景もなしに条件が明示されたので、条件に意味はない「課題のコード」のように思いました。
87
+
48
88
  Re: ah6BD2gZo5GnjnT さん