软件系统一旦出现 bug,绝大多数情况下是 需求混乱导致的。

2021-08-11 15:38:43 +08:00
 James369
写了这么多年的软件,已经练就了一身铜墙铁壁,不吹牛的说,“我”写出来的代码基本没有什么 bug 。
更确切的说是在软件层面很少出现什么 bug,为什么,主要还是得益于严密的思维,丰富的经验积累,比如:
~ 传入的参数控制好边界,非法值的判断。
~ 所有的异常情况考虑周全,捕获到位。
~ 严格按照接口规范处理。
~ 返回码 /错误码处理到位。
~ 不写花里胡哨 /晦涩难懂的代码。
~ 谨慎处理并发 /异步 /回调。
~ 注意对象的生命周期,引用释放。
~ 写完一个功能,立马自测一遍。
...
这种防御式的编程模式,基本做到了滴水不漏。所以给出去的软件模块 99%都不会有问题。


然而 bug 终究会产生,这个时候“我”发现,大部分的 bug 都源自需求的混乱不勘,功能的杂乱堆叠,业务的纠缠不清。
所以,再强大的软件设计师,都会被不好的需求搞死。(比如考虑各种兼容性,比如强行让一只鱼飞上天)
这也是为什么再牛逼的操作系统也是 bug 连绵,补丁不断,因为需求太复杂了。
5119 次点击
所在节点    程序员
47 条回复
suotm
2021-08-12 15:38:17 +08:00
哈哈,这个我晓得,多和 Rust 的编译器斗争,然后去写脚本语言( JavaScript/Python).
macha
2021-08-12 15:38:35 +08:00
业务一旦复杂起来就很难全部覆盖到,所以有时候我都是先和所有人谈好我的代码能覆盖的场景,让大家一起 review 。
只要把所有场景 cover 住了,至少出去的产品是符合设计预期的。

所以有时候不是追求无 bug,而是追求产品是符合设计预期的。
yuruizhe
2021-08-12 18:25:16 +08:00
@Rocketer else 后面多个 if 就好了,可惜啊
dinjufen
2021-08-12 19:09:53 +08:00
我也想写出逻辑缜密、bug 少的代码,无奈经常加班太疲惫。996 的情况下你还能写出好代码么?很多公司把技术看得并不重,很多人认为只要增加工作时间,功能就一定会做得更快更好。
rekulas
2021-08-12 22:19:44 +08:00
如果说第一条多花点时间还勉强可以做到
第二条 "所有的异常情况考虑周全,捕获到位。"
永远做不到,如果你做到了,那一定是系统不够复杂
Myprajna
2021-08-13 08:47:10 +08:00
老板,来一份酒吧炒饭!
lulu7
2021-08-13 09:41:28 +08:00
佩服楼主的责任心,如果程序员都是你这样的,那项目的效率会提高很多吧。之前看过一个尽早崩溃的贴子,现在有点分不清到底是尽早崩溃,还是用防御性编程了。一个死掉的程序不是比一个瘫痪的程序造成的损失要小得多吗?所以在没有瘫痪时要用防御式编程吗?
贴子: https://www.zentao.net/redirect-index-19377.html

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/795104

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX