你知道重构其他人的源代码的最佳实践吗?

时间:2014-02-13 07:58:04

标签: refactoring

我收到了一些其他开发人员的源代码。源代码没有记录,我的任务是将其划分为不同的模块。你在练习中有一些方法如何做到这一点,以便现有的应用程序不会被打破。

3 个答案:

答案 0 :(得分:2)

尝试在不同的代码段之间建立依赖关系。如果你看到重复,这几乎肯定是一个你可以增加模块化的地方。此外,整合内容。一个文件中的函数实际上应该用于相似的相关目的。此外,一般来说,功能通常应该做一些小的专业任务。

对于文档,我建议联系开发人员,询问他们的确切含义。如果这是不可能的,请再次阅读,阅读和阅读。确保在开始之前内外了解它。

答案 1 :(得分:2)

第一步是为要重构的代码的当前部分编写测试用例。编写测试用例还可以帮助您理解代码的真正功能。

如果您运行的测试代码可以继续重构。用较小的方法拆分代码(一个方法应该只做一件事)并遵循干净的代码原则来验证测试是否仍在运行。

然后我会开始寻找死而复杂的代码,并将属于一起的方法和类一起移动。对于这项工作,有很多好的工具可以简化你的工作。声纳和死码检测只是为了两个。

作为最后一步,我将更改模型并查找模式并相应地转换代码。

魔法是在您启动时测试代码。因为那时你可以非常确定你生成的新闪亮代码的行为和以前一样。

我可以为您的任务推荐的书籍。 清洁代码,清洁代码,可读代码的艺术,代码简单性,质量代码:软件测试原则,实践和模式,首要设计模式

答案 2 :(得分:2)

我喜欢将指标建立为练习的目标。重构的问题是知道你何时完成,并通过建立指标,你强迫自己去思考。

我使用像Sonar这样的工具,与源代码控制系统和持续集成管道集成,作为一个测量框架。 (所以,是的,您可能需要做的第一件事就是设置源代码控制和持续集成)。

标准的声纳规则集非常明智。在较高级别,您可以设置单元测试覆盖率和规则合规性的目标。规则合规性涵盖了各种指标 - 代码重复,注释掉的代码,代码依赖性,复杂性等。

您还可以看到代码随时间演变的图表,显示您是否正朝着正确的方向前进。

下一部分“最佳实践”建议是在任务跟踪系统中捕获您的工作,作为用户故事或其他任何内容。在大多数情况下,我的业务利益相关者想知道我什么时候完成重构,并且使用我用于跟踪功能开发的相同过程有助于建立信心。

最后 - 虽然Vadimo的书籍推荐是可靠的,但我想添加“Refactoring to Patterns”。它显示了改进代码的实用步骤,而不必一直到“四人一组”的纯度。