当您在编写代码时,是否会同时进行此操作?
当您的经理批准它时?(似乎从来没有发生过)
我想这取决于更改的影响。 如果我更改代码,对类外部没有任何影响,对我来说这是低影响。
什么时候会成为设计更改? 当它影响X对象或X项目时吗?
我只是好奇其他团队是如何处理这个问题的...
当您在编写代码时,是否会同时进行此操作?
当您的经理批准它时?(似乎从来没有发生过)
我想这取决于更改的影响。 如果我更改代码,对类外部没有任何影响,对我来说这是低影响。
什么时候会成为设计更改? 当它影响X对象或X项目时吗?
我只是好奇其他团队是如何处理这个问题的...
如果它影响公共API,我 通常 喜欢将重构作为单个源代码提交,不会更改行为(然后在另一个提交中构建新的行为)。 如果它还影响其他项目,就需要就此达成共识,并且我希望得到更改其代码的许可,以便将其放入同一重构提交中。
我发现当我在写完代码三个月后回来(可能是为了添加/扩展功能),我会进行重构。
如果我花费超过2分钟来理解一段代码的作用,我会将其拆分以使其更易于理解(或者只是添加一些注释)。
所有的测试一旦都运行完毕。
在编码过程中进行重构有时是最容易的,特别是如果你的经理不支持这个举措,但如果你只改变了一小部分,它会破坏周围部分的一致性。在这些情况下,最好是有选择性的,就像你建议的那样,做一些低影响的事情。将长的选择/开关语句重构为函数,并延迟重构内部代码直到以后某个时间点也可能有所帮助。
在之前的工作中,我是经理,所以我随时可以进行重构。在我的现在的工作中,我是一个分析员,所以大部分代码不是直接由我负责。当我写代码时,我避免影响任何我没有编写的东西。我有一个完全由我自己控制的项目,每当我学到更好的方法时,我都会进行重构。
我在一个大型系统中工作,所以只会更改必须更改的内容。更改可能会带来不良影响,这一点需要特别注意。
如果某些代码部分性能不佳、无法正常工作或需要新功能,我会进行重构。
我从不仅仅决定去修复问题,否则永远也无法完成。如果它能够正常工作,没有人要求更改或抱怨问题,请继续前进。生命太短暂,无法修复所有问题。
当用户需求发生变化或修复错误时,我经常重构我的代码。然后就会有机会让其他人审查你的更改。
否则,即使代码有点臭味,我通常也不会碰可工作的代码。
我们发现在编写代码时进行小的重构是最好的方式 - 只做必要的事情,最好是成对进行。
对于更大的事情,我们在墙上设置了一个技术债务部分 - 如果你发现了一些问题,但没有时间解决它,或者需要一些讨论才能解决,你可以将其添加到墙上,然后安排在未来的迭代中(或在空闲时间出现时)。
我们尽可能经常进行重构。拥有单元测试以确保在重构前后一切正常真的很有帮助。
代码审查流程通常有助于解决这个问题。如果我修改了一些代码,它会被审查员审核,审查员会问:“你为什么要这样做?”我会回答:“因为(插入丑陋的原因)所以我必须这样做。” 这表明代码在审查完成后应该立即进行重构。
看看我们公司,我们决定我们即将发布的应用程序主要是专注于性能优化而不是新功能。这是我们感到需要的,并且也是一些客户要求的。 因此,我们花费了很多时间识别应用程序中的性能瓶颈,并审核代码并重构它以使其运行更快。
所以在我们的情况下,我们这样做是因为管理层批准我们在这个新版本中这样做,因为我们向他们展示了可以获得多少性能提升。