开发新版本的时候,换人了就重写,没有换人就重构

本文通过生动的比喻和专业解析,阐述了重构(refactor)与重写(restructure/rebuild)的区别,强调了重构过程中单元测试的重要性,帮助读者深入理解软件开发中的关键概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

铃铃,一位刚毕业的大学生

现在在某大司做技术运营

虽然每天都和技术哥哥们聊技术

但总觉得自己技术底蕴还差很多

于是

她拿起了一线码农的挚爱 ---《重构》


640?wx_fmt=jpeg


但读着,读着

她发现重构这个词被用在了很多领域

像产业重构、场景重构...

难免会引起对基础概念的混淆

于是

她向身边的技术哥哥们逐一请教

重构和重写的区别是什么?


640?wx_fmt=jpeg


热情的技术哥哥们当然不令赐教

于是

有了下面的答案


640?wx_fmt=jpeg



魔方版


把一个魔方通过各种旋转步骤拼好叫重构

把魔方拆成一块一块再拼好叫重写



整容版


重构有点象化妆

重写有点象整容



开源版


看懂了源实现的改进叫重构

没看懂就硬写叫重写



Coding版


开发新版本的时候

换人了就重写

没有换人就重构



生活用品版


重构:新三年,旧三年,缝缝补补又三年
重写:买新衣服



男朋友版


重构:修理下现在的男朋友
重写:新找一个



房地产版


重构 = 旧址改造
重写 = 棚改户



认真版


重构(refactor)与重写(restructure, or, rebuild)因为有很相似的关键点——将代码重新组织,所以很难让人理解两者的重要区别究竟在哪。翻开《重构》这本书时,里面讲到bad smells并生动地通过具体示例展示如何改善代码质量。这本书被誉为与《设计模式》齐名,所以多少能折射出其重要性并让人想到与《设计模式》多少有些关系(重构的本质是改变设计,所以与设计模式一定是有关联的)。


《重构》在第四章的第一句话明确地指出了关键点:If you want to refactor, the essential precondition is having solidtests。再直接一点,如果一个“重构”行为发生时,并没有现成的单元测试做保障,那其实是重写的行为。之所以强调“现成的单元测试”,因为重构时是希望接口行为不发生变化的,而没有单元测试是保障不了这一点的。



听了技术哥哥们

用各种方式解释了重构和重写的区别

如果你还意犹未尽

希望能和技术大牛们近距离接触

这里有一个不错的机会


杭州•云栖大会 开发者生态峰会

即将在9月22日,杭州云栖小镇举办

届时将有



阿里巴巴集团CTO 张建锋(行癫)

阿里巴巴中间件负责人 林昊(毕玄)

阿里巴巴高级研究员 蔡景现(多隆)

阿里巴巴高级研究员 刘国华(索尼)

Oracle中国首席工程师 杨晓峰 

《码出高效》作者 杨冠宝

视障工程师 蔡勇斌

Apache Dubbo 布道师 吕仁琦

阿里巴巴计算平台资深技术专家 王峰

Apache RocketMQ创始人 & Linux OpenMessaging 标准创始人 冯嘉

Pouch Container 开源负责人 孙宏亮

阿里巴巴IoT资深技术专家 于新林


想参加,还没门票?

 

转发本文

并在公众号后台发送“开发者生态峰会”

赢取限量门票(共5张)


640?wx_fmt=gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值