问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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

发布网友 发布时间:2023-10-12 12:41

我来回答

2个回答

热心网友 时间:2024-11-29 08:00

  我们这个行业里有大量的专业术语被使用。不幸的是,我们并没有对每个术语表达的究竟是什么意思达成共识。我经常听到人们误用“重构(Refactoring)”这个词,导致这种编程方法在很多企业里变成可怕的事情而被拒绝采用。怕什么?据我的观察,大部分都是因为错误的使用了这个术语。
  我认为,因为没有对专业术语的使用严加管理,致使整个行业的发展受到连累。如果一个化学家对另一个化学家说“我们准备做滴定(titration)试验”,所有人都清楚的知道是要干什么。我相信计算机科学仍然是一门非常不成熟的科学。如果这个科学能够成熟起来,我们对专业术语的使用就会更加精确和有章法,这样我们的交流就会更加的精确和有效。
  重构对于代码质量和可读性的改进是一种非常有效的技术方法。精确的描述:它是一种为了将来的维护和理解而对代码进行改进的一种*性的修改行为。一个好的例子:把重复的代码提炼成一个方法,所有出现了这重复代码的地方都使用这个方法来代替,以此消除重复。重构是在上世纪90年代早期被第一次提出来讨论的概念,1999年代Martin Fowler的大作《重构》出版之后成为业界普遍接受的技术方法。
  重构会导致代码的内部结构发生一些小的变化。这些变化原则上不会对外部产生任何影响。规范的单元测试只从外部来检查代码的行为,是不会发现这些代码是被重构过的。如果代码的结构变化时导致了代码的对外行为发生变化,那这不是重构。
  可是,为什么我们的企业的相关人士当听到这么简单而且有用的“重构”技术时会裹足不前呢?我认为这是因为程序员实际上说的是一种更加复杂、成本更高的结构调整技术,因为没有一个合适的术语来表示,就把它叫做“重构”了。重构里的结构调整通常不是代码的推倒重写,很多的现有代码都要重用。人们对此害怕的原因是,他们不知道水有多深,一旦掉进去将要付出多少时间,而且怀疑这种行为能带来多少的好处。
  上面说的结构上发生重大变化的例子让我想起来一个新业主接管一个饭店或酒吧后会做的事情。新主人通常会对饭店进行重新装修,让它看起来更有吸引力,更舒适。饭店建筑的大部分都会被保留和重用,这比完全重建会减少大量的成本。依我的经验,当程序员使用“重构”这个术语时,他们真正的意思是,代码库中的某些模块或有边界的上下文内容需要进行重大的修整。如果我们把这个术语定义清楚,让相关人员知道它的目的和意义,那我们就能对项目进行更好的计划和管理了。
  这些代码的修整活动必须在之初有清晰的目标,所有的变动必须按照要求进行测试。例如,当我们对业务有了新的认识后,会发现代码没有真正的反映出业务模型。这种认识经过一段时间后不断的积累,代码开始不再满足业务需求。如果使用领域驱动设计(Domain Driven Design),业务模型的本质会被看的更清楚。当对业务有了新的理解后,代码需要大调整来适应新需求。如果为了赶工期,随意在需要的地方进行代码修改,代码的发展会偏离精炼出的设计模型。各处的修改相互不关联,慢慢积累,虽然可以运行,但也带来了不好的副作用。这就需要代码重构。重构的过程中,测试的目的就是要检查这些重大的程序结构调整是否仍然完全的满足改进后的业务设计说明。
  对于核心业务将来的发展,或者降低一个关键的模块为应对产品的需求偶尔做出的升级的风险,代码的修整是十分有必要的。
  我好奇其他人也是否相似的在开发中出现的这些现象,你觉得对这些概念进行重新定义有意义吗?

热心网友 时间:2024-11-29 08:00

按照你这个说法 肯定是代码重构咯
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...时间会发作,很痛的,请问是这样吗?会痛多久? ...已经坏了,如今全身浮肿,尿排不出,医生说就这 我爷爷得了肝癌晚期,腹水,不能手术.听说氩氦超冷刀技术能治.哪里有... 父亲59岁得了肝癌晚期,医生说最多半年时间了,上面还有80多岁的爷爷... 长春跑大连的列车员,怎么区分正式分和临时工呢? 员工刚怀孕就被开除,开除负责人拒不认错,你如何看待该公司的态度?_百 ... 员工在职期间怀孕,老板可以无故迟退吗? 老板开除怀孕女员工违法吗 如何选购蚊帐 什么样的蚊帐最好 炒菜为什么要先放肉?20 什么是铜汉菜, 经常吃, 也这样叫, 但学名找不到?绿色的,...2 炸过的油还能做菜吗?44 汉菜是晚上吃还是白天吃7 肥猪肉炸出的油用来炒菜8 文玩核桃的虫眼长什么样? 我清洗新买的核桃时 发现上面有个针...13 五月初一是什么节日风俗习惯是什么3 炸酥肉的油能炒菜吗9 18-2X等于X++3道解方程? 花呗分期还款如何取消?128 有谁知道淘宝上的货品过了春节之后什么时候才开始发货啊?求解?24 我的信用良好,为什么刚把蚂蚁借呗还清,再用就没有额度了?4 女孩子和男孩子的眼光是不同的,男孩子最讨厌女孩子留什么样的发型? 福建省遴选为何还没开始 蚂蚁花呗怎么一次性还清欠款107 有没有关与神奇宝贝的游戏,不要联网4 什么是代码的坏味道3 我想问一下泸州老窖的泸州位于哪个省 关于神奇宝贝的游戏有哪些?10 第一次去女方家,买点什么东东?女朋友说买水果去就行了,不会太寒酸吧... TV动漫op放完之后说某某提供的那句话是什么?5 炒菜时先把菜炸一下捞出来再炒是为什么?4 孩子太小,带出去旅游什么也记不住,没有任何意义,你认同这种观... 结婚的时候炸肉剩了很多的油,后来婆婆就用来炒菜用?能行吗4 炒肉时 ,八角,桂皮,干辣椒,花椒等香料用油炸炒香后再放肉,...71 TV动漫op放完之后说某某提供的那句话是什么?5 炸肉丸子剩下的的油可以炒菜吗??30 我的世界神奇宝贝在游戏里怎么退出3 每次动漫的op放完后会有主角声优说一段话,说的是什么?15 莫为忠效义是什么意思一? 联想乐phone s1怎么通过蓝牙接收数据? 如何将自己的发给别人31 怎么发给别人 怎么复制给别人 一根直径32毫米6米长的管子有多重1 我们单位想建立一个荣誉室,牌匾奖杯太多,如何陈列才能又简单大方美观... 胶卷拍完后 然后该怎么办1 核磁共振胶片可以卷起来保存吗14 古蔺县石宝镇办理准生证需要哪些材料,是第一胎,有结婚证,不是一个... 跨年收到银行手续费增值税专用发票,要冲减跨年度的财务费用,怎么做凭 ...