我已經閱讀了很多重構文獻,並且在例子中看到的一個常見主題是大量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