做程序员好多年了,一直有个疑问,几乎没有一个程序或者功能是完全一次性写完不修 bug 的

2023-09-21 08:06:24 +08:00
 xiaotuzi

由于最近写小工具,自认为很简单,而且写的时候还是比较认真,但还是写了些 bug ,回想起自己这么些年,每次做功能都要重新去 check 代码,debug 代码,真的感觉经验并不能完全取代 bug 的产生,写代码至少要多重复一遍,大家有没有这种感觉?还是只有我自己才这样?

12595 次点击
所在节点    程序员
113 条回复
lzgshsj
2023-09-21 11:50:30 +08:00
宇宙是混沌,程序员没法观测到所有的运行分支
FeatureProbe
2023-09-21 11:53:18 +08:00
没有,就像没有一个人可以从婴儿到成年没有生过病(无论大小病)的人。
fyibmsd
2023-09-21 12:03:35 +08:00
bug 不是程序的对立面 而作为程序的一部分与之永存
wdssmq
2023-09-21 12:15:40 +08:00
酒吧 炒饭
huyi23
2023-09-21 13:34:25 +08:00
来泼一盆冷水,出 bug 是正常的,但是几乎没有一个程序或者功能是完全一次性写完不修 bug 的,真的是能力问题,bug 能接受,但是一堆 bug 确实无法接受,影响整组开发。
dif
2023-09-21 13:57:36 +08:00
很难做到无 bug 吧。
第一,对需求的理解,如果不到位那么写出来的东西肯定有 bug 。
第二,测试很刁钻,在咖啡馆点了个炸弹(点白酒已经被瑞幸实现了)。乍一看不合理,但真有这样做的用户(也有可能是别有用心的人)。
第三,目前我接触到的工作环境,很难给你多少时间去思考怎么能够完善,或者完美的写出一套逻辑。(恶心的日报机制)。所以大家都是需求来了大概理解一下就开始上手干了,不然日报没法交代。
Daniel17
2023-09-21 13:59:17 +08:00
首先这种情况就不可能存在
xiaotuzi
2023-09-21 14:03:19 +08:00
@dif 我说的是自认为写的没有 bug 了,结果一测试就有 bug ,没有说需求和业务逻辑的关系。单纯就是自我感觉。
43n5Z6GyW39943pj
2023-09-21 14:19:05 +08:00
还是兼容
dayeye2006199
2023-09-21 14:28:14 +08:00
TDD 可解。
最近还是体会到这个东西的好处。

其实非常符合人脑思考问题的流程
AmosLi
2023-09-21 14:45:48 +08:00
chatGPT 第一次给你的代码也跑不起来
nutting
2023-09-21 14:50:06 +08:00
linux 很多内置的东西,比如 awk ,sed ,还有 shell 本身,有的应该是 20 年没更新了吧,不知道是不是有 bug
hazardous
2023-09-21 15:19:23 +08:00
有啊,上次写了个验证,一二十行代码,竟然一次就跑通了,那成就感简直爆棚了!
zpf124
2023-09-21 15:31:59 +08:00
有啊,写一些简单的 CRUD 功能基本上很快就写完了,算上关联查询、树形结构数据,文件上传都几乎没 bug 。

偶尔发现的 bug 主要以输入的值入参校验没很细导致的直接保存失败之类的,比如字段超长,输入文本正则校验遗漏了某一类格式。


然而,没有人能一次性想好所有的功能细节,那么初版完成之后随着业务思路的梳理总会有一些小改动,这些改动反倒很容易引起之前没有的漏洞。

因为写初版功能的时候,我脑子里的思路是完整的包含从头捋到尾的完整思路, 而后续对于某些细节改动时,就像打补丁,很容易只梳理了改动的点,而忽略这个改动对实现原有初版流程的影响,这时候我脑子里只有这一小段片段,没有完整的流程,几乎代码的 80%功能性 bug 都是这里产生的。
54xavier
2023-09-21 15:34:42 +08:00
代码写完有 bug 其实没什么,没 bug 才恐怖,有时候明明觉得这里没有判断好,那里可能有潜在的问题,急急忙忙上线,发现用户用的好好地,什么问题都没有,那才是叫人感到恐怖!
nuk
2023-09-21 15:37:25 +08:00
得看谁用吧,主体功能达到了,其他小 bug ,我可以当作它们不存在,顾客在酒吧点锟斤拷炸了酒吧关我包工头啥事情。。
rpish
2023-09-21 16:10:21 +08:00
有个指标叫做千行代码缺陷率。
我觉得这个指标的存在侧面说明了 bug 产生不可避免。
GuardX
2023-09-21 17:02:08 +08:00
#inlcude<stdio,h>
int mian()
{
printf("hello world")
}
好吧,确实做不到
BUHeF254Lpd1MH06
2023-09-21 17:02:28 +08:00
额都做了这么久程序员了,还能问出这个问题吗
charlie21
2023-09-21 17:15:03 +08:00
这要从软件工程复杂性从何而来说起
https://www.sohu.com/a/524801828_612370
https://github.com/Cactus-proj/A-Philosophy-of-Software-Design-zh
https://zhuanlan.zhihu.com/p/590534099?utm_id=0 浅谈 A Philosophy of Software Design 软件设计哲学 作者:John Ousterhout Tcl 脚本语言的创建者,并且以在分布式操作系统和存储系统中的工作而闻名

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

https://tanronggui.xyz/t/975722

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

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

© 2021 V2EX