StringBuilderまとめ

オチがアレ
5

素朴な疑問

疑問はふと見つけたこの1行のコードから始まった。By C#

ヒロ @cz75hiro

new StringBuilder("")というコードを見たけど、引数に""入れたほうがいい理由ってなんかあるんだろうか。自分はいつもnew StringBuilder()だけだからなんか気になる

2013-01-31 10:33:08
あやぴー @ayato_p

@cz75hiro ないんじゃないですか??←

2013-01-31 10:34:02
ヒロ @cz75hiro

@ayato_p Reflectorで覗いてみましたけど、new StringBuilder()との差は内部でString.Emptyが渡ってるか、""を直接渡してるかくらいの差っぽかったです。気にすることではないのかな

2013-01-31 10:40:34
SHUJI @shuji_w6e

@cz75hiro なさげですね。初期が空だって意図したいってくらいでしょうか。まあ、あっても問題は無いと思うので気にしない程度

2013-01-31 12:02:36
はぇ~ @haxe

@cz75hiro "" ってことでstring.Emptyが使われない分、無駄なコストに見える。もちろん大差ないけど…

2013-01-31 10:36:24

コストについての言及があったので

引数無しと、空の文字列を渡す微妙な差について、過去のブログエントリから考えてみよう

ヒロ @cz75hiro

@haxe ちょっと前に""とstring.Emptyの差についてのエントリがTLに上がってましたけど、「併用すると無駄」っていうことくらいしか頭に残ってないですので、そっちもちょっと見直してみますw

2013-01-31 10:42:38
ヒロ @cz75hiro

「""とstring.Emptyの差についてのエントリ」 見つからないwwwどこwwww http://t.co/6zijt46L

2013-01-31 10:49:06
ヒロ @cz75hiro

@gab_km ですです!わざわざありがとうございます

2013-01-31 10:52:49
ヒロ @cz75hiro

む、さっきのエントリ読み返したら、new StringBuilder("")の正当性がちょっとだけ出てきた。ちょっとだけ。そこに反論するなら、「""と打つくらいなら、打たない時間的コストを削ったほうがまし」程度かな

2013-01-31 10:58:08
irof @irof

この手のにもし正統性があったとしても、それが実質問題になったら解決はそれじゃダメだから書かないが正解だろうなーと。 http://t.co/qpJvmLpI

2013-01-31 11:56:38
irof @irof

new StringBuilder("") と書いてはいけない理由: こんなどうでもいいことで悩んでしまう場合がある。

2013-01-31 12:05:58
きしだൠ(K1S) @kis

@irof ""を入れないほうがいい理由なら思いつくけどねー

2013-01-31 11:57:45
ヒロ @cz75hiro

@kis ソースファイルが4バイト小さくなる…

2013-01-31 12:00:58

文字列連結のパフォーマンス

このへんから裏で微妙な齟齬が発生し始めていました。
本人はまだ気づかず。

Yasuo Nakanishi @nakanishiyasuo

@cz75hiro そもそもStringBuilderなんか使う必要ないです。

2013-01-31 11:53:47
ヒロ @cz75hiro

@nakanishiyasuo +演算子で十分とかですか?

2013-01-31 11:59:12
Yasuo Nakanishi @nakanishiyasuo

@cz75hiro ですです。巨大なStringを扱わない限りは+演算子で十分です。

2013-01-31 12:00:29
SHUJI @shuji_w6e

@cz75hiro @nakanishiyasuo 作法としてBuilderは知っていた方がいいと思いますよ。あと、色々追加していくと+演算子は可読性を損ねるので、formatとbuilderと読みやすい書式を選択するのが良いかと

2013-01-31 12:03:52
ヒロ @cz75hiro

. @nakanishiyasuo @shuji_w6e 自分がStringBuilder使うのはループ中に文字列つなげていくときとか、+を複数ステートメントで使って記述が冗長になった時とかですかねぇ。概ね一般的な使い方をしてる…はず…

2013-01-31 12:12:38
Yasuo Nakanishi @nakanishiyasuo

@shuji_w6e @cz75hiro +演算子で可読性を損ねるケースが思いつかないのですが....Builderを使うメリットは第一に性能面ですよね?

2013-01-31 12:18:43
Yasuo Nakanishi @nakanishiyasuo

@shuji_w6e @cz75hiro えっ、それは意外です。appendと+では+の方が短いので可読性が高いと判断してました><

2013-01-31 12:22:09