实际的重构

ahb*_*ahb 3 refactoring

我读过关于重构的内容,并且可能在我知道它之前做过,但是我并不是真的知道它实际上已经完成了它实际意味着什么.

  • 从您的角度来看,重构是什么?
  • 你是怎么做的,什么时候做的?

Ada*_*son 6

从您的角度来看,重构是什么?

作为纯粹的学术定义,重构是现有代码的一种重大改变,它(理论上)不会影响行为或输出.

就实际意义而言,它可以是各种各样的事物.作为一个小样本:

  • 将重复的代码块移动到专用函数中
  • 赋予变量更清晰或更具体的名称
  • 改变阶级关系以更好地反映现实世界的关系(或一般的类重新设计)
  • 解耦以前相互依赖的代码

如果听起来很多这些例子都应该事先做好,那就是故意的; 很多重构只是简单地将你编写的代码改编成你应该如何编写它(尽管,公平地说,很多重构也不适合这种描述).

你是怎么做的,什么时候做的?

"什么时候"既短又大,无所谓:什么时候可以,什么时候必须.

如果可以,重要的是要确保您编写的代码将来不会削弱(或跛)您.如果您事先采用快捷方式按时发货,那么您可能有机会在未来的时间内投入一点时间进行重构.然而,拥有"停工时间"的想法显然只是商业界的一个神话;)

需要重构的时候通常是一个判断调用,它说"团队需要更少的时间来重构这个代码,使其更改(或修复此错误),而不是编写新代码以这样的方式,它适合那里".这是一种应该像瘟疫一样避免的情况; 重构比新代码更危险(通常),因为你正在改变已经(希望)已经测试过的东西.根据定义,在"时间紧缩"的情况下这样做更加危险.

像大多数维护编码一样,重构几乎没有短期利益(毕竟,你没有改变输出).这些好处来自于正确的前期设计,其形式是减少未来的维护负担和更快(并且希望更可靠)的变化.

从好的方面来说,重构可能是令人愉快的(尽管它有时也令人抓狂)