2012年10月11日木曜日

StringBuffer,StringBuilderの惜しい使い方

Androidというよりも、Javaのなのですが文字列の結合でよく使うStringBuffer,StringBuilderですが、惜しい使い方をしているのをよく見かけます

文字列の結合で最も簡単なのは次のような書き方です

※nameは文字列で事前に定義されているとします


String text = "私の名前は" + name + "です";

+での文字列結合は、無駄に文字列を生成してしまうので良くないとされています
そこで使われるのがStringBufferやStringBuilderです

で、表題の「惜しい」という点は、こんな書き方です

StringBuilder text = new StringBuilder();
text.append("私の名前は" + name + "です");

例としてすこし大げさに書いていますので、普段はこんな書き方しないと思います

ここで言いたいのは「惜しい」書き方としてappendの中で+(プラス)での文字列結合を使用している点です
これではStringBuilderを使う必要ないですよね

書くのであれば、次のようにしましょう


StringBuilder text = new StringBuilder();
text.append("私の名前は")
text.append(name);
text.append("です");

行が多くなってイヤだな。とおもわれる場合は次のようにもできます


StringBuilder text = new StringBuilder();
text.append("私の名前は").append(name).append("です");

まぁ・・・可読性が落ちてしまうのが難点です

文字列結合による速度の低下は結構大きいので、ループの中で+(プラス)による文字列結合とかを見つけたら、改善していきましょう




0 コメント:

コメントを投稿