重构可以、也应该融入到你写代码或维护代码的过程中——作为日常开发/质量管理的组成部分,就像写测试和代码审查一样。重构应该被安静的,持续的和低调的完成。它需要我们把工作精力分出一部分给它,它需要在我们的工期评估和风险评估中考虑到它的存在。如果做的正确,你不需要去解释或向外人验证这部分工作。
花几分钟、一两个小时做重构,就像是你开发过程中的一种修改,是工作的一部分。如果它让你花了数天时间,或者更长,那不是重构;那是重写,或重新设计。如果你需要明确的留出一部分时间(或整个sprint周期)来重构代码,如果需要为清理代码而申请批准,或把清理代码作为一个开发需求,那你不是在重构——即使你用了重构的技术和工具,你仍然做的是另外一种工作。
有些程序员认为对代码进行根本的、重大的修改是他们的权利和义务,在重构的名义下进行重新设计、重写,为了将来,也不辜负自己的技艺。重新设计和重写有时候是你正确的该做的事情。但出于坦诚和表述清楚,请不要把这些活动赋以重构的名义。