我已经阅读了很多重构文献,并且在例子中看到的一个常见主题是大量IF语句的减少。下面是一个非常简单的代码块,首先检查是否提供了电子邮件地址,如果是,则继续验证电子邮件地址。我通常会看到很多这种类型的代码,看起来总是有点混乱,特别是如果有多个变量的话。这个IF语句代码片断如何被重构?
if (string.IsNullOrEmpty(email)) {
throw new ApplicationException("Email Address Required");
}
else {
if (!ValidationService.EmailAddressIsValid(email)) {
throw new ApplicationException("Invalid Email Address");
}
}
我的问题是,这个例子是完全可以接受的吗?它有味道吗?如何重构此片段?
-1:不真的*重构*并没有减少if -s的数量 – chiccodoro 2010-10-04 16:50:49
不能不同意更多chiccodoro。虽然它不会减少if-s的数量,但它确实删除了一个,并使其更具可读性,特别是如果它位于您的方法的顶部并充当警卫的话...... – 2010-10-04 17:13:38
@Bryce:好吧,它可能会*稍微*提高可读性(尽管这很主观),但OP的问题是*减少大量的IF语句*。有了这个建议,你仍然有2个if语句直接在代码中。如果你有多个方法进行相同的检查,你在许多地方有验证逻辑,而不是一个。然而,许多重构问题都是关于(恕我直言)。 (顺便说一句:对于迟到的回答,没有注意到你的评论,因为它不是以@chiccodoro开头) – chiccodoro 2010-10-11 13:12:12