专栏文章 从错误中学习

FunTester · 2021年10月26日 · 最后由 FunTester 回复于 2021年10月28日 · 3375 次阅读

前两天在推上看到马斯克发了一张图,主题是从错误中学习,如下:

从错误中学习

读完有点感触,想起最近在重新用到的 Java 静态测试工具SpotBugs,昨天听组内技术分享,突然想起来这个工具了,有兴趣的可以看看Intellij 静态代码扫描插件 SpotBugs

为什么要说这个插件呢,因为它本身能发现项目中大量不规范或者非最佳实践的代码,堪称代码 BUG 的百科全书,一般千行代码的不规范点都在 10 以上,当然其中大部分都是重复的。还有他能检测出很多的性能问题,虽然都是小问题,比如冗余的代码调用,无用的代码行,以及非性能最佳实践的代码。

每次打开SpotBugs的报告,都能看到一推的红色警告,然后翻一翻就能得到一些新的体会,也算是一种工作积累。

在我自学的过程中,深刻认识到现在的能力都是过往的 BUG 积累出来的。在无数个下班的夜里,跟 BUG 战斗到天亮。吃一堑长一智,每次经过 BUG 的洗礼,都感觉自己水平上升了另外一个阶段。没掌握一个 Java 的知识点,至少遇到 10 次 error。在不断尝试的过程中也是能遇到无数个 error 才能确认完全掌握某个 API。这在我最近学习 Golang 的过程中依然适用。

最近在整理一份 Java 的教程中,就觉得大多数时候一个 API 正确的使用方式只有少量几种,但是错误的方式却成倍增加。而这些错误的方式其实都是隐藏的知识点。对于学习一门语言来说,即使 SDK 自带的 API 调用也是很多变的。一般我都是先搜一个最佳实践的代码,然后不断尝试换一个别的使用姿势,这其中相当于拓展了这个知识点关联的知识点了。而且通过不断试错和练习,也能加深自己对这个知识点的理解。

就我自己的经验来讲SpotBugs属于从别人的错误中学习,自己在学习过程中不断试错从自己的错误中学习。编程语言以及其生态圈中的各类框架都有非常多隐藏的 BUG,偶尔发现一个还是挺奇妙的。比如我之前写过两个 BUG:Math.abs() 求绝对值返回负值 BUG 分享Intellij 运行 Java 程序启动等待 BUG 分享

图中的第一项应当是人人都需要避免的,而后两项距离过于遥远,是在没啥经验。

别让错误从手中悄悄溜走!

Have Fun ~ Tester !

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 4 条回复 时间 点赞

以前我们内部评审 sonar 自带代码规则的时候,也有这种感觉,每个规则背后都是很多错误累积出来的经验。

陈恒捷 回复

谢谢大佬回复

FunTester 回复

我不是大佬。。。真正的大佬都在大会分享议题,我还有很多需要学习的。

陈恒捷 回复

谦虚了

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册