永发信息网

到底是代码重构还是代码修整

答案:2  悬赏:10  手机版
解决时间 2021-03-02 09:28
到底是代码重构还是代码修整
最佳答案
我们这个行业里有大量的专业术语被使用。不幸的是,我们并没有对每个术语表达的究竟是什么意思达成共识。我经常听到人们误用“重构(Refactoring)”这个词,导致这种编程方法在很多企业里变成可怕的事情而被拒绝采用。怕什么?据我的观察,大部分都是因为错误的使用了这个术语。
  我认为,因为没有对专业术语的使用严加管理,致使整个行业的发展受到连累。如果一个化学家对另一个化学家说“我们准备做滴定(titration)试验”,所有人都清楚的知道是要干什么。我相信计算机科学仍然是一门非常不成熟的科学。如果这个科学能够成熟起来,我们对专业术语的使用就会更加精确和有章法,这样我们的交流就会更加的精确和有效。
  重构对于代码质量和可读性的改进是一种非常有效的技术方法。精确的描述:它是一种为了将来的维护和理解而对代码进行改进的一种限制性的修改行为。一个好的例子:把重复的代码提炼成一个方法,所有出现了这重复代码的地方都使用这个方法来代替,以此消除重复。重构是在上世纪90年代早期被第一次提出来讨论的概念,1999年代Martin Fowler的大作《重构》出版之后成为业界普遍接受的技术方法。
  重构会导致代码的内部结构发生一些小的变化。这些变化原则上不会对外部产生任何影响。规范的单元测试只从外部来检查代码的行为,是不会发现这些代码是被重构过的。如果代码的结构变化时导致了代码的对外行为发生变化,那这不是重构。
  可是,为什么我们的企业的相关人士当听到这么简单而且有用的“重构”技术时会裹足不前呢?我认为这是因为程序员实际上说的是一种更加复杂、成本更高的结构调整技术,因为没有一个合适的术语来表示,就把它叫做“重构”了。重构里的结构调整通常不是代码的推倒重写,很多的现有代码都要重用。人们对此害怕的原因是,他们不知道水有多深,一旦掉进去将要付出多少时间,而且怀疑这种行为能带来多少的好处。
  上面说的结构上发生重大变化的例子让我想起来一个新业主接管一个饭店或酒吧后会做的事情。新主人通常会对饭店进行重新装修,让它看起来更有吸引力,更舒适。饭店建筑的大部分都会被保留和重用,这比完全重建会减少大量的成本。依我的经验,当程序员使用“重构”这个术语时,他们真正的意思是,代码库中的某些模块或有边界的上下文内容需要进行重大的修整。如果我们把这个术语定义清楚,让相关人员知道它的目的和意义,那我们就能对项目进行更好的计划和管理了。
  这些代码的修整活动必须在之初有清晰的目标,所有的变动必须按照要求进行测试。例如,当我们对业务有了新的认识后,会发现代码没有真正的反映出业务模型。这种认识经过一段时间后不断的积累,代码开始不再满足业务需求。如果使用领域驱动设计(Domain Driven Design),业务模型的本质会被看的更清楚。当对业务有了新的理解后,代码需要大调整来适应新需求。如果为了赶工期,随意在需要的地方进行代码修改,代码的发展会偏离精炼出的设计模型。各处的修改相互不关联,慢慢积累,虽然可以运行,但也带来了不好的副作用。这就需要代码重构。重构的过程中,测试的目的就是要检查这些重大的程序结构调整是否仍然完全的满足改进后的业务设计说明。
  对于核心业务将来的发展,或者降低一个关键的模块为应对产品的需求偶尔做出的升级的风险,代码的修整是十分有必要的。
  我好奇其他人也是否相似的在开发中出现的这些现象,你觉得对这些概念进行重新定义有意义吗?
全部回答
你好! 按照你这个说法 肯定是代码重构咯 如有疑问,请追问。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
用这个c语言程序怎么设计成绩的最大值 大神
弹簧原长20cm,下端挂重为4N的物体,弹簧长为
洋海公路出口地址在哪,我要去那里办事
下列关于人的生命的说法不正确的是A. 每个人
开车时如何判断车距
贝佳人内衣怎么去啊,有知道地址的么
迈腾1.8T DSG舒适型的CD机如何使用
林师傅铁锅鸡大炖羊肉怎么去啊,有知道地址的
电脑下网络游戏的时候为什么没有字而是框框
gtv裴裴英雄联盟名字是啥
大广高速公路/X016(路口)在什么地方啊,我要
婴儿吃什么鱼好
在一块长80米,宽60米的长方形地的周围种树,每
厨房设备年久使修怎样申请怎么写
请问当时校考报的是美术学,填志愿时第一志愿
推荐资讯
暖气片是不是片数越多越保暖
华容极乐寺地址在什么地方,想过去办事
郎心如铁演员表
某女,经来先期,量少或多,色红质稠,手足心
为什么北京卫视电脑直播看不了
单选题Hewaswalkingalongtheriver________
神武手游推广人ID
目前韩国一线顶级明星都有谁啊?
河滩北路/红山路(路口)在哪里啊,我有事要去
房产证没有子女名字户口可以迁入吗
我是大一学生,准备去做家教兼职,他们要我去
痛经寒湿凝滞证的治法是A.理气化瘀止痛B.温经
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?