ゆるふわで雑な日記

Microsoft系の技術情報を中心にゆるふわに綴っていく予定です

コードレビューの最中、素敵なコードを見かけたので

晒してみる…
以下原文まま(VBです)

Private Function GetPathJoin(meinPath As String, ParamArray joinPath() As String) As String
    For Each joinstring in joinPath
        meinPath += "\" & joinstring
    Next
    return meinPath
End Function

以下機械的にC#にしただけのもの

private string GetPathJoin(sting meinPath, params string[] joinPath)
{
    foreach(var joinstring in joinPath)
        meinPath +="\\" + joinstring;
    return meinPath;
}

このコードは業務で実際に作成されたものです。
見ての通り?業務Logicは含まれていません
これ、どうなんでしょう?
このコードは、private(BL層のclass)に作成されています。
Loopの中で文字列を加算演算子を使って結合しています。
第一引数はstringで、第二引数はstringの可変長引数です

private string GetPathJoin(params string[] joinPath)
{
    return string.Join("\\" , joinPath);
}

このコードと結果は同じでは?
各要素の最後が"\"の場合が想定されていないのが気になります。
全て受け入れたとしても、Path.Combine(params string[])を再作成しているだけだと言うのが特に気になります。
(結果が同じになるとは限らないんですが、目的(文字列要素をPathの構成要素として連結する)がという意味で)
結局、これを書いた方は何を考えていたのかが未だ不明です。
同project内でもPath.Combineは使っているので…
今回はただ愚痴と言うか、文句になっていますが、アンチパターンとして誰かの役に立てばいいなと…