从输入字符串的组合生成字符串

cb_*_*dev 0 c# refactoring

我有一个混乱的方法,它生成一个三个字符串的名称.这三个字符串可以为null.我要检查每个可能的组合并根据给定的可用值创建一个字符串.结果名称中的每个变量都没有固定位置/布局,这取决于所有字符串的可用性.

我的方法现在看起来像这样:

    private String GetName(string variable, string label, string dimension)
    {
        string result = String.Empty;
        if (!String.IsNullOrEmpty(label) && !String.IsNullOrEmpty(variable) && !String.IsNullOrEmpty(dimension))
        {
            result = String.Format("{0} [{1}] ({2})", label, dimension, variable);
        }
        else if (!String.IsNullOrEmpty(label) && !String.IsNullOrEmpty(dimension))
        {
            result = String.Format("{0} [{1}]", label, dimension);
        }
        else if (!String.IsNullOrEmpty(label) && !String.IsNullOrEmpty(variable))
        {
            result = String.Format("{0} ({1})", label, variable);
        }
        else if (!String.IsNullOrEmpty(label))
        {
            result = String.Format("{0}", label);
        }
        else if (!String.IsNullOrEmpty(variable) && !String.IsNullOrEmpty(dimension))
        {
            result = String.Format("{0} [{1}]", variable, dimension);
        }
        else if (!String.IsNullOrEmpty(variable))
        {
            result = String.Format("{0}", variable);
        }
        return result;
    }
Run Code Online (Sandbox Code Playgroud)

关于如何改进这种方法的任何建议(摆脱if/else结构)?

Say*_*yse 5

检查顶部的空值,如果需要,更改为字符串,然后创建最终结果

var stringsToInclude = new List<string>();
if(!String.IsNullOrEmpty(label))
    stringsToInclude.Add(label);
if(!String.IsNullOrEmpty(dimension))
    stringsToInclude.Add(string.Format("[{0}]", dimension));
if(!String.IsNullOrEmpty(variable))
    stringsToInclude.Add(string.Format("({0})", variable));


result = string.Join(" ", stringsToInclude);
Run Code Online (Sandbox Code Playgroud)

String.Join