您是否使用任何指标来决定下一部分代码(类,模块,库)的哪些部分将被合并或重构?
答案 0 :(得分:3)
我不使用任何可以自动计算的指标。
我使用code smells和类似的启发式检测错误的代码,然后我会在注意到它后立即修复它。我没有任何查找问题的清单 - 大多数情况下,直觉“这段代码看起来很乱”,然后推断为什么它很混乱并找出解决方案。简单的重构,例如为变量提供更具描述性的名称或提取方法只需几秒钟。更密集的重构,例如提取类,可能需要一两个小时(在这种情况下,我可能会留下TODO注释并稍后重构)。
我使用的一个重要启发式方法是Single Responsibility Principle。它使课程具有良好的凝聚力。在某些情况下,我在代码行中使用类的大小作为启发式,以便更仔细地查看,类是否具有多个职责。在我的current project中,我注意到在编写Java时,大多数类的长度都不到100行,而且当大小接近200行时,类会做很多不相关的事情,并且可以将它分开为了获得更有针对性的凝聚力课程。
答案 1 :(得分:2)
每次我需要添加新功能时,我都会搜索已经存在的类似代码。一旦我找到这样的代码,我想重构它来解决原始任务和新任务。当然,我不是每次都决定重构 - 通常我会重复使用代码。
答案 2 :(得分:1)
我通常只重构“按需”,即如果我看到代码的具体即时问题。
通常,当我需要实现新功能或修复错误时,我发现代码的当前结构使这很困难,例如:
然后我会重构。
我有时会看到代码似乎有问题而且我想改变,但如果该区域目前尚未开展工作,我会抵制这种冲动。
我认为重构是在面向未来的代码之间的平衡,以及做不真正产生任何直接价值的事情。因此,除非我看到具体的需要,否则我通常不会重构。
我想听听重构人员的经历。你如何阻止自己抛光太多,以至于你失去了重要功能的时间?
答案 3 :(得分:0)
我们使用Cyclomatic_complexity来识别接下来需要重构的代码。
答案 4 :(得分:0)
我使用Source Monitor并在复杂度指标大约为8.0时常规重构方法。