返回此.AllowChooseAny.Value? radioSpecific.Checked? UserManager.CurrentUser.IsClient? txtSubject.Text:subjectDropDownList.SelectedItem.Text: String.Empty: UserManager.CurrentUser.IsClient? txtSubject.Text:subjectDropDownList.SelectedItem.Text;
或以不太复杂的形式:
return any ?
specified ?
isClient ? textbox : dropdown :
empty :
isClient ? textbox : dropdown;
或以示意图形式:
|
any
/ \
specified isClient
/ \ / \
isClient empty textbox dropdown
/ \
textbox dropdown
显然我在两个不同的级别上有一个重复的块。是否可以优化此代码以将它们分成一个?或类似的东西..
答案 0 :(得分:11)
这段代码几乎不可读。不要仅仅为了三元运算符而使用三元运算符;通过消除非常简单表达式的if
块,可以使得更多可读。你拥有的不是。
答案 1 :(得分:6)
您可以将表达式简化为:
if (any && !specified)
{
return empty;
}
else
{
return isClient ? textbox : dropdown;
}
答案 2 :(得分:5)
any && !specified ?
empty :
isClient ? textbox : dropdown;
答案 3 :(得分:0)
将isClient ? textbox : dropdown
块放在方法中并从原始分支进行方法调用=不再需要代码重复。