【发布时间】:2011-09-08 13:03:02
【问题描述】:
如果检查它正在执行,我的代码与 if - else 非常混乱。分支和嵌套分支的数量相当大(超过 20 个 if - else if 和嵌套)。它使我的代码更难阅读,并且可能会成为性能问题。我的应用程序会检查从用户那里获得的许多条件,因此应用程序必须始终检查不同情况,例如:
如果文本框文本不为0,则继续下一个...
if ((StartInt != 0) && (EndInt != 0))
{
然后在这里检查用户是否选择了日期:
if ((datePickerStart.SelectedDate == null) || (datePickerEnd.SelectedDate == null))
{
MessageBox.Show("Please Choose Dates");
}
这里,如果日期选择器不为空,它会继续代码...
else if ((datePickerStart.SelectedDate != null) && (datePickerEnd.SelectedDate != null))
{
// CONDITIONS FOR SAME STARTING DAY AND ENDING DAY.
if (datePickerStart.SelectedDate == datePickerEnd.SelectedDate)
{
if (index1 == index2)
{
if (StartInt == EndInt)
{
if (radioButton1.IsChecked == true)
{
printTime3();
}
else
{
printTime();
}
}
这只是正在进行的检查的一小部分。其中有些是函数式的,有些是用于输入验证的。
有没有什么方法可以让它更易读、更省性能?
【问题讨论】:
-
也许你应该在方法或事件前面做验证,如果你在里面做,比如 if(dtp.SelectedDate == null) return;而不是继续进行信息处理。
-
我有一种强烈的感觉 SelectedDate 来自日历控件,那些永远不能为空,你需要检查
datePickerStart.SelectedDate == DateTime.MinValue。 -
代码运行良好,这不是我的问题。我要解决的问题是这种复杂的 if else 分支的可读性和性能
标签: c# switch-statement if-statement