time 
设为首页】【收藏本站
当前位置: 主页 > 程序设计 > .net > .net入门 > 列表

 
2011-07-24 15:14:56 | 好评(0) | 浏览(22)
历时一个多月的时间,代码重构系列终于写完了,代码的坏味道大家一看都不会陌生,绝对是在我们的编程中如影随形的,现在把相应的重构方法和设计模式总结出来,以供大家参考.因为不论是重构还是应用设计模式,一切的目的都是为了软件构架的优雅,而不是炫耀技术。 步步为...
 
2011-07-24 15:09:05 | 好评(0) | 浏览(20)
一、Form Templlate Method(塑造模板函数) 动机(Motivation) 有一些subclasses,其中相应的某些函数以相同顺序执行类似的措施,但各措施实际上有所不同。将各个措施分别放进独立函数中,并保持它们都有相同的签名式(signature),于是原函数也就变得相同了。然后...
 
2011-07-24 15:05:57 | 好评(0) | 浏览(11)
一、Replace Exception with Test(以测试取代异常) 动机(Motivation) 面对一个[调用者可预先加以检查]的条件,你抛出了一个异常。修改调用者,使它在调用函数之前先做检查。 示例 private Dictionaryint, string _values; public double GetValueForPeriod(int per...
 
2011-07-24 15:02:58 | 好评(0) | 浏览(5)
一、Preserve Whole Object(保持对象完整) 动机(Motivation) 要向某个方法内传递若干个值,可以改使用传递整个对象。 示例 int low = DaysTempRange().GetLow(); int high = DaysTempRange().GetHigh(); withinPlan = Plan.WithinRange(low, high); 改为 withinPla...
 
2011-07-24 14:59:14 | 好评(0) | 浏览(6)
一、Remove Control Flag(移除控制标记) 动机(Motivation) 以break语句或return语句取代控制标记。 示例 public void CheckSecurity(string[] people) { string found = string.Empty; for (int i = 0; i people.Length; i++) { if (found.Equals()) { if (people[...
 
2011-07-24 14:56:56 | 好评(0) | 浏览(4)
一、Replace Type Code with Subclasses (以子类取代型别码) 动机(Motivation) 以一个subclass取代这个type code,如果面对的type code不会影响宿主类的行为,可以使用Replace Type Code with Class 来处理它们。但如果type code 会影响宿主类的行为,那么最好的办...
 
2011-07-24 14:52:34 | 好评(0) | 浏览(7)
一、Duplicate Observed Data(复制[被监视数据]) 动机(Motivation) 将该笔数据拷贝到一个domain object中。建立一个Observer模式,用以对domain object 和GUI object内的重复数据进行同步控制(sync)。 示例 步步为营 .NET 设计模式学习笔记 十二、Observer (观察...
 
2011-07-24 01:04:15 | 好评(0) | 浏览(10)
一、Introduce Foreign Method(引入外加函数) 动机(Motivation) 在client class 中建立一个函数,并以一个server class实体作为第一引数(argument)。 示例 DateTime newStart = DateTime.Now.AddDays(1); 改为 public DateTime NextDate() { return DateTime.Now...
 
2011-07-24 01:01:42 | 好评(0) | 浏览(5)
一、Extract Class(提炼类) 动机(Motivation) 一个class应该是一个清楚的抽象(abstract),处理一些明确的责任。但在实际工作中,class会不断成长扩展。这个class会变得过份复杂,很快,class就会变成一团乱麻。 示例 public class Person { private string _name...
 
2011-07-24 00:59:49 | 好评(0) | 浏览(6)
Move Method 概述 程序中,有个函数与其所驻class之外的另一个class进行更多交流,调用后者或被后者调用 动机(Motivation) 如果一个class有太多行为,或如果一个class与另一个class有太多合作而形成高度耦合(highly coupled),我们就会搬移函数。通过这种手段,我...
 
2011-07-24 00:57:46 | 好评(0) | 浏览(6)
Replace Method with Method Object 概述 将这个函数放进一个单独对象中,如此一来局部变量就成了对象内的值域(field),然后你可以在同一个对象中将这个大型函数分解为数个小型函数. 动机(Motivation) 小型函数优美动人,只要将相对独立的代码从大型函数中提炼出来,就可以...
 
2011-07-24 00:56:00 | 好评(0) | 浏览(9)
Split Temporary Variable(剖解临时变量) 概述 程序中有某个临时变量被赋值超过一次,它既不是循环变量,也不是一个集用临时变量(collecting temporary variable) 动机(Motivation) 临时变量有各种不同用途,其中某些用途会很自然地导至临时变量被多次赋值.(循环变量)和(...
 
2011-07-24 00:54:32 | 好评(0) | 浏览(8)
一、Inline Method 概述 一个函数,其本体(method body)应该与其名称(method name)同样清楚易懂. 动机(Motivation) 以简短的函数表现动作意图,这样会使代码更清晰易读.但有时候你会遇到某些函数.其内部代码和函数名称同样清晰易读.也可能你重构了该函数,使得其内容和其...
 
2011-07-24 00:52:30 | 好评(0) | 浏览(12)
动机(Motivation) Extract Method是我们最常用的重构手法之一.当我们看见一个过长的函数或一段需要注释才能让人理解用途的代码,我们就会将这段代码放进一个独立函数中. 有数个原因造成我们喜欢简短而有良好命名的函数.首先,如果每个函数的粒度都很小(finely grained),...
 
2011-07-24 00:46:18 | 好评(0) | 浏览(40)
一、为什么要重构(Refactoring) 通过重构可以达到以下的目标: 1持续偏纠和改进软件设计 重构和设计是相辅相成的,它和设计彼此互补。有了重构,你仍然必须做预先的设计,但是不必是最优的设计,只需要一个合理的解决方案就够了,如果没有重构、程序设计会逐渐腐败变...