2006/12/10
idiom ? coding pattern ? part2
http://dev.ariel-networks.com/Members/anaka/idiom-coding-pattern の続き。
なんと呼べばいいのか分からない粒度のpatternだが、
StringBuilder sb = new StringBuilder();
for (int i = 0; i < array.length; i++) {
if (i > 0) {
sb.append(", ");
}
sb.append(array[i]);
}
といったコードもよく見る。
#文字列の配列["ab", "cde", "f", "ghi"]を渡すと文字列"ab, cde, f, ghi"が返ってくる。
ループ変数で条件判断をするのはループの本質に合わない(同じことを繰り返すからループである)ので、このケースなら
StringBuilder sb = new StringBuilder();
String delim = "";
for (int i = 0; i < array.length; i++) {
sb.append(delim);
sb.append(array[i]);
delim = ", ";
}
とすべきだと思っているのだが、この書き方はあまり人気がないような気がする。
#念のために書いておくが、if文を書いたら負けかなと思っているわけではない。
- The URL to Trackback this entry is:
- http://dev.ariel-networks.com/Members/anaka/idiom-coding-pattern-part2/tbping
コメントが消された (Re:idiom ? coding pattern ? part2)
もしかして英語のタイトルのコメントは問答無用に消す設定ですか?
Re:idiom ? coding pattern ? part2
(chompはあっているかどうかわからないが、要するに最後のコンマをsubstringでカットします)
Re:idiom ? coding pattern ? part2
ちなみに、コンテナの型によるchompのコストを気にすべき局面もあります(要素数が多い場合)。ただのLinked Listだと、chompのコストはO(n)です。
Re:idiom ? coding pattern ? part2