当前位置:  开发笔记 > 程序员 > 正文

你如何重构一个经常被编辑的类?

如何解决《你如何重构一个经常被编辑的类?》经验,为你挑选了4个好方法。

随着时间的推移,我的团队创建了一个集中处理责任集合的中心类,并运行到超过8,000行,所有这些都是手写的,而不是自动生成的.

任务已经下降.我们需要重构怪物类.计划的最大部分是将功能类别定义到他们自己的类中,并与怪物类建立一种关系.

这意味着当前读取的很多引用都是这样的:

var monster = new orMonster();
var timeToOpen = monster.OpeningTime.Subtract(DateTime.Now);

很快会读到这样的:

var monster = new Monster();
var timeToOpen = monster.TimeKeeper.OpeningTime.Subtract(DateTime.Now);

问题是:我们如何在地球上协调这样的变化?每个商务舱都提到"orMonster"垃圾.在代码中的数千个地方调用了一些方法.我们保证,只要我们有这样的机会,团队中的其他人(可能是多个人)就会检查出调用.OpeningTime属性的代码

如何在没有生产力停滞的情况下协调如此大规模的变革?



1> Patrick McEl..:

您应该使旧方法调用新方法.然后随着时间的推移更改对旧方法的引用,以调用新方法.更改所有客户端引用后,可以删除旧方法.

有关更多信息,请参阅Martin Fowler的经典Refactoring中的Move Method.



2> Eddie..:

您可以做的一件事是暂时将代理方法留在将委托给新方法的怪物类中.大约一周后,一旦您确定所有代码都在使用新方法,那么您可以安全地删除代理.



3> David..:

我之前通过继续并重构代码来处理这个问题,然后添加与将旧调用转发到新方法的旧签名相匹配的方法.如果将"Obsolete"属性添加到这些临时方法,则仍将使用旧方法调用和新方法调用构建代码.然后,随着时间的推移,您可以返回并升级调用旧方法的代码.这里的区别在于,您将在构建期间获得"警告",以帮助您找到需要升级的所有代码.



4> Spencer Rupo..:

我不确定您使用的语言是什么,但在.Net中,您可以创建编译器警告,这将允许您将旧引用保留一段时间,以便它们按预期运行,但会向其他开发人员发出警告.

http://dotnettipoftheday.org/tips/ObsoleteAttribute.aspx

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有