您刚刚编写了一堆代码,以便在压力下提供一些重要功能.你已经削减了一些角落,你已经将一些代码混合到一些名称如SerialIndirectionShutoffManager的过度膨胀的类中.
你告诉你的老板,你需要一周的时间来清理这些东西.
"干什么?"
"我的代码 - 它是一个猪圈!"
"你的意思是还有一些bug修复?"
"不是真的,它更像......"
"你会让它跑得更快吗?"
"也许,但不是......"
"那么当你有机会的时候你应该写得很好.现在我很高兴你在这里,是的,我将不得不继续前进,并要求你在这个周末来这里."
我读过Matin Fowler的书,但我不确定我是否同意他对此事的建议:
鼓励定期进行代码审查,因此鼓励重构工作作为开发过程的自然部分.
只是不要说,你是开发人员,也是你职责的一部分.
这两种方法都不需要与您的经理沟通.
你告诉老板你怎么了?
在原始估算中包含重构时间非常重要.在您交付产品然后告诉他您实际上没有完成之后,去找您的老板就是在撒谎.您实际上没有完成可交付的截止日期.这就像一位外科医生做手术,然后不确定他是否按照预期的方式放回一切.
在原始计划中包含开发的所有部分(例如重构,可用性研究,测试,质量保证,修订)非常重要.最终,这不是一个程序员问题的管理问题.
然而,如果你继承了一团糟,那么你将不得不向老板解释,最后一批程序员急于让项目走出大门并且一直在跛行.你可以暂时解决这个问题(就像他们可能做的那样),但是每个创可贴都会延迟问题并最终解决问题的成本要高得多.
对老板说实话,明白项目一旦完成就不会完成.
用他能理解的语言说话.
重构是支付设计债务.
问你的老板他为什么每个月都要支付公司信用卡账单,而不是在收到通知之前不付款.告诉他重构就像每月付款一样.
只需这样做,并将其安排到您的正常流程中.估计重新开始新变更或完成变更(理想)的重构时间.在我最初探索新代码(提取方法等)时,我总是重构.
位于.告诉他这是对新技术的研究.然后告诉他你决定费用不能证明其好处.他认为你做得很好.
大声笑@人们降低modding /标记攻势.
真的,如果这是一个吝啬的老板,谁不懂廉价软件的好软件,他不知道的最终会让他更快乐.如果是我,我会离开公司,前往他们尊重开发人员编写优秀代码的能力.但话说回来,这就是我处于高级职位的原因.
告诉他,与软件项目相关的80%的成本都处于生命周期的维护阶段.现在为减轻未来问题所做的任何重构,并有一些例子,将在以后需要维护该代码时获得实质性的成本效益.
这假设你是因为某种原因而重构,而不是程序员虚荣.