我目前正在尝试重组我的程序,使其更加面向对象并更好地实现已知模式等。
我有很多嵌套的 IF 语句,想去掉它们。我该怎么办?我的第一个方法是在有例外的情况下完成它,所以例如
public static Boolean MyMethod(String param) {
if (param == null)
throw new NullReferenceException("param may not be null");
if (param.Equals("none") || param.Equals("0") || param.Equals("zero"))
throw new ArgumentNullException("param may not be zero");
// Do some stuff with param
// This is not executed if param is null, as the program stops a soon
// as one of the above exceptions is thrown
}
该方法在应用程序的主类中使用,例如
static void Main() {
try {
Boolean test = MyClass.MyMethod(null); // Will throw an exception
} catch (Exception ex) {
MessageBox.Show(ex.Message, "Error");
}
我认为这非常好,因为它可以防止嵌套语句,并且几乎所有方法操作都很好地安排在一个级别上。
与 IF 语句一样,该方法如下所示
public Boolean MyMethod(String param) {
if (param != null) {
if (!param.Equals("none") && !param.Equals("0") && !param.Equals("zero")) {
// Do some stuff with param
} else {
MessageBox.Show("param may not be zero", "Error");
} else {
MessageBox.Show("param may not be null", "Error");
}
}
我发现它非常非常丑陋并且难以维护。
现在的问题是;这是这个方法吗good?我知道,这可能是主观的,但是如何克服嵌套 IF(1 或 2 级还不错,但之后会变得更糟......)