追求代码质量: 用代码度量进行重构
2009-11-19 00:00:00 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ょ紓宥咃躬瀵鎮㈤崗灏栨嫽闁诲酣娼ф竟濠偽i鍓х<闁诡垎鍐f寖闂佺娅曢幑鍥灳閺冨牆绀冩い蹇庣娴滈箖鏌ㄥ┑鍡欏嚬缂併劎绮妵鍕箳鐎n亞浠鹃梺闈涙搐鐎氫即鐛崶顒夋晬婵絾瀵ч幑鍥蓟閻斿摜鐟归柛顭戝枛椤牆顪冮妶搴′簼缂侇喗鎸搁悾鐑藉础閻愬秵妫冮崺鈧い鎺戝瀹撲礁鈹戦悩鎻掝伀缁惧彞绮欓弻娑氫沪閹规劕顥濋梺閫炲苯澧伴柟铏崌閿濈偛鈹戠€n€晠鏌嶆潪鎷屽厡闁汇倕鎳愮槐鎾存媴閸撴彃鍓卞銈嗗灦閻熲晛鐣烽妷褉鍋撻敐搴℃灍闁绘挻娲橀妵鍕箛闂堟稐绨肩紓浣藉煐濮樸劎妲愰幘璇茬闁冲搫鍊婚ˇ鏉库攽椤旂》宸ユい顓炲槻閻g兘骞掗幋鏃€鐎婚梺瑙勬儗閸樺€熲叺婵犵數濮烽弫鍛婃叏椤撱垹纾婚柟鍓х帛閳锋垶銇勯幒鍡椾壕缂備礁顦遍弫濠氱嵁閸℃稒鍊烽柛婵嗗椤旀劕鈹戦悜鍥╃У闁告挻鐟︽穱濠囨嚃閳哄啰锛滈梺褰掑亰閸欏骸鈻撳⿰鍫熺厸閻忕偟纭堕崑鎾诲箛娴e憡鍊梺纭呭亹鐞涖儵鍩€椤掑啫鐨洪柡浣圭墪閳规垿鎮欓弶鎴犱桓闂佸湱枪閹芥粎鍒掗弮鍫熷仺缂佸顕抽敃鍌涚厱闁哄洢鍔岄悘鐘绘煕閹般劌浜惧┑锛勫亼閸婃牠宕濋敃鈧…鍧楀焵椤掍胶绠剧€光偓婵犱線鍋楀┑顔硷龚濞咃絿妲愰幒鎳崇喓鎷犻懠鑸垫毐闂傚倷鑳舵灙婵炲鍏樺顐ゆ嫚瀹割喖娈ㄦ繝鐢靛У绾板秹寮查幓鎺濈唵閻犺櫣灏ㄥ銉р偓瑙勬尭濡繂顫忛搹鍦<婵☆垰鎼~宥囩磽娴i鍔嶉柟绋垮暱閻g兘骞嬮敃鈧粻濠氭偣閸パ冪骇鐎规挸绉撮—鍐Χ閸℃ê闉嶇紓浣割儐閸ㄥ墎绮嬪澶嬪€锋い鎺嶇瀵灝鈹戦埥鍡楃仯闁告鍕洸濡わ絽鍟崐鍨叏濡厧浜鹃悗姘炬嫹

核心提示: 主动和被动重构那么问题就变成了“我怎么才能知道什么时候该进行重构呢?” 一段代码的可维护性是个主观的问题,但是,追求代码质量: 用代码度量进行重构(2),我们中的多数人都会发现,维护自己编写的代码要比维护其他人编写的代码容易得多,方法的一个逻辑部分被移除,并被赋予自己的方
主动和被动重构
那么问题就变成了“我怎么才能知道什么时候该进行重构呢?” 一段代码的可维护性是个主观的问题。但是,我们中的多数人都会发现,维护自己编写的代码要比维护其他人编写的代码容易得多。但在这点上也有争议 —— 在整个职业生涯中维护自己的代码是最大挑战。没有几个真正的 “代码牛仔” 足够幸运地能够不断地变换工作,而不必修改其他人的代码。对于我们中的多数人来说,必须维护其他人的代码恰恰是程序员生活的一部分。决定代码是否需要重构的方法,通常是主观的。
但是,也有可能客观地判断代码是否应当重构,不论是自己的代码还是别人的代码。在 这个系列前面的文章中,我介绍了如何用代码度量客观地测试代码质量。实际上,可以用代码度量很容易地找出可能难以维护的代码。一旦客观地判断出代码中有问题,那么就可以用方便的重构模式改进它。
总是运行测试用例!
重构别人编写的代码的秘诀是不要把它弄得更糟。在我重构生涯的早期,学到的一件事就是在修改一些东西之前 拥有一个测试用例很重要。我是通过艰苦的一夜,在我自己整理得很好的重构方法中苦苦寻觅,只为找到一个我不小心破坏的别人编写的工作正常的代码之后学到这个教训的,不小心破坏的原因就在于重构之前没有对应的测试用例。请注意我的警告,在自己进行重构之前,总是要运行测试用例!
提取方法模式
Martin Fowler 的书出版之后的几年中,增加了许多新的重构模式分类;但是,迄今为止最容易学习的模式,也可能是最有效的模式,仍然是提取方法(Extract Method) 模式。在这个模式中,方法的一个逻辑部分被移除,并被赋予自己的方法定义。现在被移走的方法体被新方法的调用代替,如图 1 的 UML 图所示:
更多精彩
赞助商链接