首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

重构:怎样有效改善“烂”代码

  • 24-12-16 16:03
  • 2241
  • 8600
juejin.cn

每个系列一本前端好书,帮你轻松学重点。

本系列来自前ThoughtWorks首席科学家马丁福勒所编写的  《重构:改善既有代码的设计》(第二版)

关于烂代码,每个人都有一箩筐的话可说:

  • 不知用途的变量
  • 无脑复制的方法
  • 莫名改变的状态
  • 碰一下就出问题的逻辑
  • 一不留神就漏改的取值

如果开个吐槽大会,能吐一整天。吐槽这些问题时,我们都会问:这是谁写的?

可能得到如下回复:

1、不是我写的,我也不知道谁写的

2、好像是我写的,但已经很久了,我也忘了

3、当时这样写是因为产品提了一个很“恶心”的需求,既要这样,又要那样

4、当时做的时候只有两种情况

5、是另一个人写的,他已经离职了,没有注释,没有文档

起源

笔者很“幸运”,所在公司常有新产品开发,所以常常创建新项目,新项目没有任何历史包袱,写起来那叫一个爽,想怎么来怎么来,大家都爱。

但经验告诉我,不行,如果真的放任自由,很快它就会变得不干净,多快?两年?一年?不,两个月就够了。

所以,第一优先的事是定项目架构和编码规范,把某类事情要怎么做写清楚,大家都按规矩来。

这样就没问题了?大家是人,不是机器,规范定了要遵守,人的天性就是不受束缚,规范中总有一些规则与个人习惯相冲突,这时候按哪个来?人往往会按自己的来,反正“不会”出事。

久而久之,规范就形同虚设,同项目的小伙伴之间,你写你的,我写我的,遇到问题了,都得互相询问“你这段代码是什么意思,为什么这样写”,人在职还好说,如果不在,只能靠猜。

虽然现在都倾向于组件化、模块化开发,但人与人之间的代码完全没有关联是不可能的,一旦产生关联,就带来了复杂度,如果疏于设计和维护,复杂度只会越来越高。

最终,没有哪个人敢说自己对项目代码完全清楚和有把握。改不敢改,加不好加,即便有问题需要调整和优化,也谨小慎微地进行,一不小心就出线上bug,这显然违背了大家的初衷。

该归责于谁?同事?别人是你的同事,你也是别人的同事,“雪崩的时候没有一片雪花是无辜的”。

解药

可有解药?有,但有前提。

一、开发人员需要具备足够的编码素养,持续学习和更新自己对于好代码的认知,并对自己有高要求,能够写出高可读性、维护性、拓展性的代码。

二、不论水平多高的程序员,面对多变的需求和场景,也不可能一次性把代码写得很完备,调整和修改是开发日常,所以,一个正确的“编程观”是:改代码不是被迫而为之的苦差事,而是保持项目代码健康度所必需做的事。

三、为他人,也是为自己。很多人认为,代码自己写了能解决当下的问题就可以,以后的事先不管,这是不负责任的做法,退一步看,可能以后真的不需要你管了,但别人很可能也是这样想的,你去接手别人的代码时,就会被“坑”,你吐槽别人不好好写,别人也在吐槽你。

识别与行动

我们提倡一次把事情做对,如果不能,就要具备识别错误的能力,也要具备改正错误的能力,更需要把控好改正错误的时机和节奏。

《重构》这本书,就是作者根据自己多年的开发经验,所总结出的一套通用的,可行性强的方法。

如果你是新手,别认为跟你没关系,还记得上面的“两个月”言论?你很快就会和“烂”代码相遇。

如果你是老手,相信已经积累了一些重构的方法和技巧,不妨作为重新的整理和补充。

之所以将本书作为前端开发书籍来解读,是因为在本书的第二版,示例当中采用了JavaScript语言的版本,也是少有的讲通用编程技巧使用JavaScript语言的书籍,这对前端开发者是好事,但使用其他编程语言的程序员也不必担心,本书涉及代码不多,不难懂(想想我们是怎么看那些java代码的吧),其技巧和方法是通用的,所以欢迎大家转发给同样陷在“烂”代码泥潭的同行朋友们。

我们下篇见。

欢迎关注公众号:前端说书匠。好文第一时间接收不迷路!~

注:本文转载自juejin.cn的灵感__idea的文章"https://juejin.cn/post/7428154034480037926"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

142
代码人生
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top