我继承了现有的代码库,其中“功能”如下:
我正在尝试清理和重构代码,让它更好一些 而不是我发现它。所以我的问题
答案 0 :(得分:6)
是否值得(或者你)使用10个左右的参数重构方法,以便它们更具可读性?
是的,这是值得的。通常更重要的是重构非“合理”的方法,而不是那些已经很好,简短并且参数列表很小的方法。
通常,如果你有很多参数,那是因为一个方法做得太多 - 很可能,它应该是它自己的一个类,而不是一个方法。
话虽如此,在需要许多参数的情况下,最好将参数封装到单个类(即:SpecificAlgorithmOptions)中,并传递该类的一个实例。这样,您可以提供干净的默认值,并且非常明显哪些方法是必需的而不是可选的(基于构造选项类所需的内容)。
是否有关于方法应该有多长时间的最佳实践?你经常保留多久?
方法应尽可能短。它应该有一个目的,并尽可能用于一项任务。如果可以将它拆分为单独的方法,其中每个方法都是一个真实的,定性的“任务”,那么在重构时就这样做。
单片类坏吗?
是
答案 1 :(得分:1)
如果代码工作且无需触摸它,我就不会重构。如果我不得不触摸它们(无论是为了扩展功能还是修复bug),我只会重构非常有问题的案例。我倾向于务实的方式:只有(95%)触摸,你改变了什么。
关于您的具体问题的一些初步想法(虽然在不知道代码的情况下很难实现):
关于你的其他具体问题。
是否值得(或者你)使用10个左右的参数重构方法,以便它们更具可读性?
definetely。对我们人类来说,10个参数太多了。很可能这种方法做得太多了。
是否有关于方法应该有多长时间的最佳实践?你经常保留多久?
这取决于...偏好。我在thread上陈述了一些内容(虽然问题是PHP)。我仍然会将这些数字/指标应用于任何语言。
单片类坏吗?
这取决于你对单片的意思。如果你的意思是很多实例变量,无穷无尽的方法,很多if / else复杂性,是的。
还可以看一下真正的宝石(对每个开发者来说都是必须的):working effectively with legacy code
答案 2 :(得分:0)
假设代码正常运行,我建议您先考虑这些问题:
如果系统将在五年内更换,记录良好,将进行少量更改,并且容易修复错误 - 无论类的大小和参数的数量如何都不管它。如果您决定以最小的更改顺序重构您的重构提议列表并逐步攻击它。