作者:empty 出版社:empty |
简介重构是持续改进代码的基础。抵制重构将带来技术麻烦:忘记代码片段的功能、创建无法测试的代码等等,而有了重构, 使用单元测试、共享代码以及更可靠的无bug的代码这些最佳实践就显得简单多了。鉴于重构的重要性,我决定在整个8月份每天介绍一个重构。在开始之前,请允许我事先声明,尽管我试着对每个重构进行额外的描述和讨论,但我并不是在声明它们的所有权,我介绍的大多数重构都可以在Befactoring.com_中找到,有一些来自《代码大全(第2版),剩下的则是我白己经常使用或从其他网站找到的,我觉得注明每个秉构的出处并不是重要的,因为你可以在网上不同的帖子或文章中找到名称类似的重构。本着这一精神,我将在明天发布第一篇帖丁井开始长达31天的重构马拉松之旅,希望你们能够享受重构井从中获益。
在某些场景中, 向类的使用者隐藏类中的完整集合是个很好的做法, 比如对集合的add/remove操作中包含其他的相关逻辑时、因此,以可迭代但不直接在集合上进行操作的方式来暴露集合,是个不错的主意。我们米看代码:public class Cr der如你所见, 我们对集合进行了封装, 没有将Add/Remove方法暴露给类的使用者, 在.NET Framework中, 有些类如ReadOnly Collection, 会由于封装集合而产生不同的行为, 但它们各白都有防止误解的说明。这是+个非常简单但却极具价值的重构, 可以确保用户不会误用你暴露的集合, 避免代码中的一些bug.
今天的重构同样非常简单, 以至于人们并不认为这是一个有价值的秉构, 迁移方法(Move Method) , 顾名思义就是将方法迁移到合适的位置在开始重构前,我们先看着一下代码:public class BankAccount
简介.
Refactoring Day l:Encapsulate Collection.
RefactoringDay2:MoveMethod.
Refactoring Day 3; PullUp Method.
RefactoringDay4:PushDownMethod.
RefactoringDay5:PullUpField.
RefactoringDay6:PushDownField.
Refactoring Day 7:Rename(method, class, parameter.
RefactoringDay8:ReplaceInheritancewithDelegation.
RefactoringDay9:ExtractInterface.
RefactoringDay10:ExtractMethod.
RefactoringDay11:SwitchtoStrategy.
RefactoringDay12:BreakDependencies.
RefactoringDay13:ExtractMethodObject.
RefactoringDay14:BreakResponsibtie.
RefactoringDay15:RemoveDuplication.
RefactoringDay16:EncapsulateConditiona.
Refactoring Day 17; Extract Superclass.
RefactoringDay18:Replaceexceptionwithconditional.
RefactoringDay19:ExtractFactoryClass.
RefactoringDay20:ExtractSubclass.
RefactoringDay21:CollapseHierarchy.
RefactoringDay22:BreakMethod.
RefactoringDay23:IntroduceParameterObject.
RefactoringDay24:RemoveArrowheadAntipattemn.
RefactoringDay25:IntroduceDesignByContractchecks.
RefactoringDay26:RemoveDoubleNegative.
Refa