StringBuilder を流暢にする

C# で StringBuilder を使っているときに、その記述が「冗長だな〜」とよく思っていました

サンプルソース、(1)の感じです
サンプルソースだとまだ順に並んでいますが、これにif文などが入ってくると、もっと込み入った感じになってきます


こちらの記事や

流れるようなインターフェース

http://capsctrl.que.jp/kdmsnr/wiki/bliki/?FluentInterface

こちらの記事を読んで

内部のドメイン固有言語

http://msdn.microsoft.com/ja-jp/magazine/ee291514.aspx

ちょっとした事なんですが

Append() を Apd()
AppendLine() を Ln()

として、戻り値にその StringBuilder インスタンスそのものを返す拡張メソッドを定義すると
メソッドチェーンが使えて、なかなか便利です

訂正

Append()、AppendLine() とも、StringBuilder インスタンスそのものを返すので、メソッドチェーンが使えます
引用記事では Apd()、Ln() のような、無闇にメソッド名を短縮することは、すすめていません

コメントでご指摘を頂きました、ありがとうございます

サンプルソース
    public class Hoge
    {
        public static void Fuga()
        {
            StringBuilder b = new StringBuilder();

            // (1) Append()、AppendLine() を使って流暢にした記述
            b
                .Append("one")
                .Append(",")
                .Append("two")
                .Append(",")
                .Append("three")
                .AppendLine()
                ;

            // (2) Apd()、Ln() を使って流暢にした記述
            b.Apd("four").Apd(",").Apd("five").Apd(",").Apd("six").Ln();

            Console.WriteLine(b.ToString());

            // (出力)
            // one,two,three
            // four,five,six
        }
    }

    public static class StringBuilderEx
    {
        public static StringBuilder Apd(this StringBuilder b, string v)
        {
            return b.Append(v);
        }
        public static StringBuilder Ln(this StringBuilder b)
        {
            return b.AppendLine();
        }
    }