
重构 - 简化条件表达式
IT_FISH629
纯正程序员一枚
展开
-
简化条件表达式之五 :Replace Nested Conditional with Guard Clauses(以卫语句取代嵌套条件式)
函数中的条件逻辑(conditional logic)使人难以看清正常的执行路径。使用卫语句(guard clauses)表现所有特殊情况。double getPayAmount() { double result; if (_isDead) result = deadAmount(); else { if (_isSeparated) re转载 2013-05-07 13:17:52 · 1545 阅读 · 0 评论 -
简化条件表达式之三 :Consolidate Duplicate Conditional Fragments(合并重复的条件片段)
在条件式的每个分支上有着相同的一段代码。将这段重复代码搬移到条件式之外。 if (isSpecialDeal()) { total = price * 0.95; send(); } else { total = price * 0.98; send(); }转载 2013-05-07 13:14:36 · 908 阅读 · 0 评论 -
简化条件表达式之四 :Remove Control Flag(移除控制标记)
在一系列布尔表达式(boolean expressions)中,某个变量带有「控制标记」(control flag)的作用。以break 语句或return 的语句取代控制标记。动机(Motivation)在一系列条件表达式中,你常常会看到「用以判断何时停止条件检查」的控制标记(control flag):set done to falsewhile not d转载 2013-05-07 13:16:13 · 1446 阅读 · 0 评论 -
简化条件表达式之一 :Decompose Conditional(分解条件式)
你有一个复杂的条件(if-then-else)语句。从if、then、else 三个段落中分别提炼出独立函数。 if (date.before (SUMMER_START) || date.after(SUMMER_END)) charge = quantity * _winterRate + _winterServiceCharge; el转载 2013-05-07 13:11:22 · 1407 阅读 · 0 评论 -
简化条件表达式之二 :Consolidate Conditional Expression(合并条件式)
你有一系列条件测试,都得到相同结果。将这些测试合并为一个条件式,并将这个条件式提炼成为一个独立函数。 double disabilityAmount() { if (_seniority if (_monthsDisabled > 12) return 0; if (_isPartTime) return 0; // co转载 2013-05-07 13:13:04 · 1108 阅读 · 0 评论 -
简化条件表达式之八 :Introduce Assertion(引入断言)
某一段代码需要对程序状态(state)做出某种假设。 以assertion(断言)明确表现这种假设。double getExpenseLimit() { // should have either expense limit or a primary project return (_expenseLimit != NULL_EXPENSE) ?转载 2013-05-07 16:22:39 · 914 阅读 · 0 评论 -
简化条件表达式之六 :Replace Conditional with Polymorphism(以多态取代条件式)
你手上有个条件式,它根据对象型别的不同而选择不同的行为。将这个条件式的每个分支放进一个subclass 内的覆写函数中,然后将原始函数声明为抽象函数(abstract method)。 double getSpeed() { switch (_type) { case EUROPEAN: return getBase转载 2013-05-07 16:19:05 · 2220 阅读 · 1 评论 -
简化条件表达式之七 :Introduce Null Object(引入Null 对象)
你需要再三检查「某物是否为null value」。将null value (无效值)替换为null object(无效物)。 if (customer == null) plan = BillingPlan.basic(); else plan = customer.getPlan(); 动机(Motivation)多转载 2013-05-07 16:21:22 · 1242 阅读 · 0 评论