步步为营 .NET 代码重构学习 十一
时间:2011-06-02 来源:网络金领
一、Remove Control Flag(移除控制标记)
动机(Motivation)
以break语句或return语句取代控制标记。
示例
07 | { |
08 | if (people[i].Equals("Don")) |
09 | { |
10 | found = "Don"; |
11 | } |
12 | if (people[i].Equals("John")) |
13 | { |
14 | found = "John"; |
15 | } |
16 | } |
17 | } |
18 | SomeDataCode(found); |
19 | } |
改为
07 | { |
08 | if (people[i].Equals("Don")) |
09 | { |
10 | found = "Don"; |
11 | break; |
12 | } |
13 | if (people[i].Equals("John")) |
14 | { |
15 | found = "John"; |
16 | break; |
17 | } |
18 | } |
19 | } |
20 | SomeDataCode(found); |
21 | } |
示例
07 | { |
08 | if (people[i].Equals("Don")) |
09 | { |
10 | found = "Don"; |
11 | } |
12 | if (people[i].Equals("John")) |
13 | { |
14 | found = "John"; |
15 | } |
16 | } |
17 | } |
18 | return found; |
19 | } |
改为
07 | { |
08 | if (people[i].Equals("Don")) |
09 | { |
10 | return "Don"; |
11 | } |
12 | if (people[i].Equals("John")) |
13 | { |
14 | return "John"; |
15 | } |
16 | } |
17 | } |
18 | return string.Empty; |
19 | } |
二、Replace Nested Conditional with Guard Clauses(以卫语句取代嵌套条件式)
动机(Motivation)
使用卫语句(guard clauses)表现所有特殊情况。
示例
07 | { |
08 | if (people[i].Equals("Don")) |
09 | { |
10 | SendMail(); |
11 | return "Don"; |
12 | } |
13 | if (people[i].Equals("John")) |
14 | { |
15 | SendMail(); |
16 | return "John"; |
17 | } |
18 | } |
19 | } |
20 | return string.Empty; |
21 | } |
改为
13 | { |
14 | if (people[i].Equals("Don")) |
15 | { |
16 | return "Don"; |
17 | } |
18 | if (people[i].Equals("John")) |
19 | { |
20 | return "John"; |
21 | } |
22 | } |
23 | } |
24 | return string.Empty; |
25 | } |
26 |
27 | public void SendMailToPeople(string people) |
28 | { |
29 | if (!string.IsNullOrEmpty(people)) |
30 | SendMail(); |
31 | } |
六、Parameterize Method(令函数携带参数)
动机(Motivation)
建立单一函数,以参数表达那些不同的值
示例
07 | { |
08 | _height = value; |
09 | return; |
10 | } |
11 | if (name.Equals("width")) |
12 | { |
13 | _width = value; |
14 | return; |
15 | } |
16 | } |
改为
相关阅读 更多 +