文章插图
作者 | Jonathan Fulton
译者 | 弯月,责编 | 屠敏
头图 | CSDN 下载自东方 IC
出品 | CSDN(ID:CSDNnews)
以下为译文:
几年前,我们曾遇到过重大的代码质量问题:大多数文件中的逻辑纠缠夹杂、大量重复、没有测试 。无论是编写新功能还是修复很小的bug都需要付出呕心沥血的代价,常常气到你吐血 。令我们苦不堪言 。
文章插图
如今,我们的代码库的整体质量明显提高了,这在很大程度上要归功于我们为提高代码质量而做出的不懈努力 。几年前,在发现代码质量问题后,我们整个团队一起阅读了Robert Martin的《代码整洁之道》,然后竭尽全力贯彻了他的建议,甚至引入了“清洁规范”作为工程团队的核心文化 。如果你打算扩张团队,那么我强烈建议你现在就开始实施这两项措施 。从长远来看,恰当地实施“干净的代码”实践可以提高一倍生产力,并显著提高工程团队的士气 。有了选择,谁还会愿意进入上图右边那个Bad code的房间呢?
在我们实施的“清洁规范”以及其他想法之中,有四项措施将团队的生产力和幸福指数提高了80% 。
- 没有经过测试的代码一概不安全 。
你需要编写大量测试,尤其是单元测试,否则你会追悔莫及 。
- 选择有意义的名称 。
为变量、类和函数选择言简意赅的名称 。
- 类与函数保持最小,遵守单一功能原则
函数不应超过4行,而类不应超过100行 。是的,你没看错 。而且它们应该只做一件事 。
- 函数不能有副作用
副作用(例如,修改输入参数)是有害的 。请确保你的代码中没有副作用 。尽可能在函数声明中明确规定这一点(例如,传入基本类型,或者传递没有setter的对象) 。
文章插图
没有经过测试的代码一概不安全每当遇到原本应该在测试捕捉到的bug时,我就会对我们的工程师重复这句话 。除非你建立了测试的文化,否则你也会一次又一次地引用这句话 。你需要编写大量测试,尤其是单元测试 。认真考虑集成测试,并确保你的测试用例足够涵盖核心业务功能 。请记住,如果有一段代码没有被测试覆盖到,那么将来肯定会出问题,而且你根本意识不到,直到被你的客户发现 。
你需要一遍又一遍地向团队成员重复这句话:“没有经过测试的代码一概不安全”,直到这句话在每个人的心里生根 。无论你是刚毕业的新手软件工程师还是经验丰富的资深软件工程师,都应该时刻履行这个实践 。
文章插图
选择有意义的名称计算机科学界有两大难题:缓存失效和命名 。
可能你曾听过这句话,这与工程团队的日常工作有着莫大的关系 。如果你和你的团队成员不擅长代码中的命名,那么你们的维护工作就会变成一场噩梦,而且你将一事无成 。你会失去最优秀的开发人员,而且你的公司距离倒闭也不远了 。
这个问题非常严重,你不应该使用诸如data、foobar或myNumber之类不恰当的变量名,而且也绝对不能将SomethingManager作为类名称 。务必使用言简意赅的名称,确保在发生冲突时能准确找到 。良好的命名不仅可以大幅提高开发人员的效率,而且还可以通过IDE的快捷方式“按名称查找” 等轻松查找文件 。另外,良好的命名需要通过严格的代码审核贯彻 。
文章插图
类与函数保持最小,遵守单一功能原则这两大原则的关系就像鸡和鸡蛋一样,无论先有鸡还是先有蛋,有了二者的因果轮回,才有我们无尽的美味 。下面先来谈谈类与函数保持最小 。
“小”对函数意味着什么?不超过4行代码 。是的,你没看错,就是4行 。你可能现在就想告辞了,但是千万别走 。虽然这个数字看起来有些武断,而且太少,你一辈子可能都没写过像这样的代码 。但是,只有4行代码的函数会强迫你认真思考,并为子函数选择真正的好名字,而这些子函数就是代码最好的文档 。另外,4行代码意味着你不会使用嵌套的IF语句,省得你需要耗费大量脑力搞清楚所有的代码路径 。
推荐阅读
- 帮别人注册淘宝店安全吗 淘宝给别人开店有风险么
- 灌木茶和乔木茶的区别,茶树的形状乔木型
- 福鼎白茶鉴别,福鼎白茶的保留方式
- 高山茶好在哪,高山茶与平地茶鉴别法
- 田七的真假鉴别方法
- 西洋参的真假鉴别方法
- 茯砖茶和黑茶的区别,喝茯砖茶有什么效果
- 真假“千岛湖”牌茶叶,如何识别?
- 福建白茶区土壤详解,安吉白茶和福建白茶有什么区别
- 顾渚紫笋茶的冲泡方式,顾渚紫笋的鉴别方法