任何设计模式都要避免以下嵌套的if语句?对于这种情况,我无法想出任何设计模式。
private Message GetMessageFrom(string[] args)
{
string id = null, body = null, label = null, path = null;
if (args.Length > 0)
{
id = args[0];
if (args.Length > 1)
{
body = args[1];
if (args.Length > 2)
{
label = args[2];
if (args.Length > 3)
path = args[3];
}
}
}
return new Message(id, body, label, path);
}
答案 0 :(得分:5)
如果数组不包含此索引,您可以使用ElementAtOrDefault
返回默认值(如果是_self.alertmsg = {}
,则返回null
):
string
或者您可以使用string id = args.ElementAtOrDefault(0);
string body = args.ElementAtOrDefault(1);
string label = args.ElementAtOrDefault(2);
string path = args.ElementAtOrDefault(3);
return new Message(id, body, label, path);
和for-loop
:
switch
答案 1 :(得分:1)
与蒂姆的答案类似,没有循环,这可能是一个选择:
string id = null, body = null, label = null, path = null;
switch (args.Length) {
case 4: path = args[3]; goto case 3;
case 3: label = args[2]; goto case 2;
case 2: body = args[1]; goto case 1;
case 1: id = args[0];
}
我发现它有点丑陋:))