工程师个人发展指南
李云
前阿里高级技术专家,《全面效能》作者
4084 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 35 讲
开篇词 (1讲)
工程师个人发展指南
15
15
1.0x
00:00/00:00
登录|注册

18|单测与重构:怎样提高代码的质量?

你好,我是李云。这一讲我们来聊一聊代码质量。
我先问你个问题,与同事配合完成工作任务时,你会希望对方的工作结果是可靠、有质量的吗?你估计会说:“这还用问吗,一定是希望那样啦,不然大家协作起来特别低效,我的工作进展也一定会受制于对方。”
那我再问你一个问题,对方对你的工作结果也是这样希望的,那你是如何保证自己的工作质量的呢?换句话说,对于咱编程来说,你是如何保证代码质量的呢?面对这个问题,你还像上面那个问题那样,信心十足地说,“我有自己的质量保证方法”吗?依据我在职场的观察,提到代码质量保证这个话题,很多工程师都是心虚的。
你可能会说了,我在工作中非常重视自己所写代码的质量,写代码时小心又谨慎,自己也会反复地测试,确保没问题。那我又要进一步问你了。
你如何度量小心和谨慎的程度呢?要知道,没法度量的话就意味着这不是一个能实操的方法,那对于实践的指导意义就不大。
你如何证明反复测试能最终带来高质量的代码呢?
如果你对代码质量保证这事有点力不从心,那我得告诉你,很早就有人思考过这个问题,而且软件行业有标准的做法来保证代码质量,那就是单元测试。你一听到“单元测试”四个字,可能会说,“哦,我在工作中是做单元测试的”,很好,那我马上会问,“你又是如何度量单元测试效果的呢?”如果你不能脱口而出,说“我是通过单元测试覆盖率来确认效果的”,那我会认为,大概率你并没有完全掌握单元测试,你的实践是不到位的,对代码质量的保证也是不充分的。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
  • 解释
  • 总结
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《工程师个人发展指南》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(2)

  • 最新
  • 精选
  • pyhhou
    我理解的是,成功与否很多时候不是由程序本身决定的,比如实际中出现的一些 case,如果设计和程序中均没有考虑到,当然测试也就没法发现。测试的目的是让程序按照设计和预想的那样落地,因为程序是人写的,人会犯错,测试是一个保护机制,同时帮助我们更好地认清自己写的代码中的漏洞,快速定位问题,让开发迭代更高效。但它没法无中生有,做到完美。 其实在我看来 “证明成功” 本身就是一个伪命题,如果说一个技术能证明成功,那么这门技术就应该是行业的金科玉律,只要掌握这门技术,做出来的软件就会是完美的。但我们都知道,在软件开发中,没有银弹,更不可能完美。 最后想问问老师怎么看 TDD 的,我们有必要花大量的时间来学习吗?我尝试过,但是先写测试有点不适应,感觉不到这门技术的优点

    作者回复: 你好, 测试不能证明成功的根本,是咱没有办法穷举所有的测试用例所致。 关于TDD,别说你不适应,我也不适应。我个人的观点是,TDD过于形式化了,那并不适合我。其实单元测试的核心目标是确保代码覆盖率,至于是不是TDD并不重要。 会不会知道我与你一样的体会,感觉咱是同路人呢?!哈哈

    2024-04-25归属地:美国
    2
  • edward
    我的理解是测试失败的情况通常是明显和可以量化的,但软件的成功还有不可测的方面,比如软件是否确实对用户产生了价值等。此外,老师是否可以推荐一些实践性强的指导测试的资料,谢谢。

    作者回复: 你好, 之所以测试不能证明成功,是因为测试用例无法穷举。 关于测试方面的资料,其实我自己因为一直是开发出身,倒真没有读过多少测试相关的资料,更多还是从开发的视角去看如何保证质量,而核心的方法就是单元测试。

    2024-04-17归属地:湖南
    2
收起评论
显示
设置
留言
2
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部
文章页面操作
MAC
windows
作用
esc
esc
退出沉浸式阅读
shift + f
f11
进入/退出沉浸式
command + ⬆️
home
滚动到页面顶部
command + ⬇️
end
滚动到页面底部
⬅️ (仅针对订阅)
⬅️ (仅针对订阅)
上一篇
➡️ (仅针对订阅)
➡️ (仅针对订阅)
下一篇
command + j
page up
向下滚动一屏
command + k
page down
向上滚动一屏
p
p
音频播放/暂停
j
j
向下滚动一点
k
k
向上滚动一点
空格
空格
向下滚动一屏
播放器操作
MAC
windows
作用
esc
esc
退出全屏
⬅️
⬅️
快退
➡️
➡️
快进
空格
空格
视频播放/暂停(视频全屏时生效)