|
|
1
21
|
|
|
2
24
一般提示:
这是世世代代的经验。 |
|
|
3
9
重构需要一个单元测试套件的安全工具来移除“我已经破坏它了吗?”感觉。在一系列测试中覆盖坏代码将有助于您争取好的干净代码。 Pex 是一个工具,我发现它对于为遗留代码创建测试很有用(如果您在.NET世界中)。 旧代码==没有测试的代码! 仁慈, 丹 |
|
|
4
7
当我必须处理向坏代码添加功能时,我通常的方法是:
这至少给了你一些信心,你没有破坏一切。至于如何学习如何应对坏代码,我想这只是经验的问题。 |
|
|
5
4
好吧,如果您要在项目中重构大量的代码,我建议您使用一些合适的版本控制,这样您就可以轻松地进行分支和回滚。考虑到,这可能是一扇敞开的门,但在我看来至关重要。 此外,在开始进入复杂的OO之前,尝试将方法和函数分解为较小的方法和函数。在每个函数中确保一定程度的原子性,这使得代码更容易维护、读取和管理。 所有这些都是关于小东西的,把它分解成逻辑操作单元,我在一个1K行方法上做一个重构操作。它做各种花哨的事情。 我的第一个目标是把尽可能多的东西分成小块,完成后,我会开始考虑一个更好的OO设计,这更容易,因为我对事物有更好的掌握。 阿司匹林也很有效。 |
|
|
6
3
我现在处于这种情况。我的方法是在接触代码之前回答一些问题:
这是一项艰巨的工作,没有人会为此感谢你。为小的改进感到骄傲,并享受完成的好工作:) |
|
|
7
1
我认为,对您正在开发/改进的软件中的所有工作原理有一个大致的了解总是很好的。这就是设计文档和其他在开发过程之后或过程中生成的文档出现的地方。我相信,如果您之前的某个人没有完成适当的文档,那么至少您应该在某个地方写几行关于您在整个开发过程中所经历的事情。我通常使用OneNote或其他东西来记录我遇到的情况,并经常列出我认为需要重构的内容。如果在项目期间有一些停机时间,我通常会回到那个列表,并尝试一点一点地改进事情。 所以,基本上,如果你之前的某个人做得不好,至少你可以帮助任何其他开发人员减少遇到相同代码的问题,这是件好事。 |
|
|
9
0
这取决于因素的数量,但最重要的是你是否有权修改它。 如果需要,请重构它。例如,重命名类/函数/变量。提取和概括功能。请参见重构: Improving the Design of Existing Code (主题为《圣经》)。 在开始执行此操作之前,请确保代码位于正确的版本控制(VC)中,并且具有一组良好的测试用例。VC允许您回滚,测试用例有助于捕获意外的副作用。 我建议使用像mercurial/bazaar和git这样的分布式版本控制,因为它的重构结构与添加特性不同。 如果没有测试(公共),则必须创建它们。读 Working Effectively With Legacy Code . 尤其是关于“密封点”(不是关于暹罗猫:p)。 如果您没有创建更干净的包装API。 例如:
这样,旧代码就不会被触动,扩展可以使用新代码来完成。这个方法的一个很好的例子是jquery,在这里访问DOM的旧(默认)方法很痛苦。 希望这有帮助。 |
|
|
Glory Raj · 有什么方法可以使这两个块具有共同的功能吗 4 年前 |
|
|
Justin · Python自属性重命名 8 年前 |
|
|
Sabutobi · 长dict属性行的重构 8 年前 |
|
|
Falco Alexander · 简单LINQ重构/样式 8 年前 |
|
|
05bs001 · Euler 12需要优化 8 年前 |
|
|
slartidan · 如何将lambda表达式重构为方法引用? 8 年前 |
|
|
Alex · 在Java类中频繁使用与映射键相同的字符串[已关闭] 8 年前 |