Redian新闻
>
程序员菜鸟请教版上马工码婆赐教写程序尽量减少bug的好办法
avatar

程序员菜鸟请教版上马工码婆赐教写程序尽量减少bug的好办法

vangoc
楼主 (北美华人网)
不到20个人的私人小公司,只有我一个程序员
没人做测试,而且可以用来测试的样本非常少,
老板非常严厉,要求马上上线,压力山大
请问如何让程序尽量减少bug,或是在log内有了error msg, 能快速的定位到错误代码的那一行?
已经尽量让代码简洁了,naming 也都consistent, 还写log, 上了一些ut。
现在的办法是用一个try catch 把所有code, 都包裹起来,能看到error, 但是无法定位error, 除非用debug tools一点一点run
谢谢大家
avatar
minqidev
2 楼
你要提供更多信息才行。 【1】用什么语言 【2】用什么IDE工具
像一般的语言报错,都有一种写法,类似于 __FILE__, __LINE__, 你可以自己写log到自己指定的文件。
这里面大家喜欢保存,当前文件,某一行出错。
avatar
gokgs
3 楼
把stack trace 加到 log 里。

avatar
coalpilerd
4 楼
try-catch尽量少用,除非你真的确定知道你能catch到什么exception以及你有办法处理那些exception。有UT的情况下,如果不用try-catch,这些错误很可能UT就能发现;很多时候try-catch只会把小毛病藏起来,然后拖成大毛病。
通过log来定位到底哪一段出了问题的常见做法是,在函数里定义一个局部变量,一开始初始化为零,然后在每个可能出问题的那一行代码下面把这个变量加一,最后dump log的时候把变量值写进去。这样你大概就知道是什么位置出错。
avatar
爱zumba
5 楼
Unit testing at least 80%
avatar
mt.everest
6 楼
不到20个人的私人小公司,只有我一个程序员
没人做测试,而且可以用来测试的样本非常少,
老板非常严厉,要求马上上线,压力山大
请问如何让程序尽量减少bug,或是在log内有了error msg, 能快速的定位到错误代码的那一行?
已经尽量让代码简洁了,naming 也都consistent, 还写log, 上了一些ut。
现在的办法是用一个try catch 把所有code, 都包裹起来,能看到error, 但是无法定位error, 除非用debug tools一点一点run
谢谢大家
vangoc 发表于 2023-04-28 09:23

try and catch你要re-throw,不要直接放log。这样才能有stack trace。

avatar
mt.everest
7 楼
Unit testing at least 80%
爱zumba 发表于 2023-04-28 09:57

估计他老板不给时间让他写unit test。哎。
反正就是要让自己日子好过,unit test,integration test,acceptance test都该有。都该扩大covarage。
然后是log,是metrics,是tracing。
不过最关键的是architecture。是设计一个好的系统。是ops,保障足够的cpu,memory,network。一旦server下线能立刻发现。
avatar
160erskine
8 楼
不到20个人的私人小公司,只有我一个程序员
没人做测试,而且可以用来测试的样本非常少,
老板非常严厉,要求马上上线,压力山大
请问如何让程序尽量减少bug,或是在log内有了error msg, 能快速的定位到错误代码的那一行?
已经尽量让代码简洁了,naming 也都consistent, 还写log, 上了一些ut。
现在的办法是用一个try catch 把所有code, 都包裹起来,能看到error, 但是无法定位error, 除非用debug tools一点一点run
谢谢大家
vangoc 发表于 2023-04-28 09:23

你这问的是写程序的最高境界,哪有shortcut啊
avatar
andolomeda
9 楼
楼上大大正解。楼主思路不太对,增加test coverage 、把架构搞好是唯一正确操作,不然这软件很快完蛋
avatar
mt.everest
10 楼
如果你用的是dotnet,我建议你加个logging interceptor,代码里面有异常,就可以直接log了。
spring 里面我估计也有类似的功能。这是chatgpt给的例子。
avatar
yihead
11 楼
对,test必须要有。最起码ut得有
avatar
gokgs
12 楼
unit test? are you guys kidding?
startup 都是 0 unit test, 直接 production. 哈哈。
avatar
xiaoywz
13 楼
对,test必须要有。最起码ut得有
yihead 发表于 2023-04-28 10:28

他说公司就他一个程序员,而且要马上go live, 现在回去搞UT?
avatar
绿葱
14 楼
程序的架构要清晰,数据结构决定程序结构。 运行的每个阶段,操作对象有一个稳定的状态, 测试或debug是看这个状态是不是异常。 复杂系统,有没有经验, 其实就是要知道这些约定,很多并不写在spec里。 有的code能明显看出是被多人写过, 每个人的稳定态理解不同, 这部分code就会有大问题。
avatar
xiaoywz
15 楼
不到20个人的私人小公司,只有我一个程序员
没人做测试,而且可以用来测试的样本非常少,
老板非常严厉,要求马上上线,压力山大
请问如何让程序尽量减少bug,或是在log内有了error msg, 能快速的定位到错误代码的那一行?
已经尽量让代码简洁了,naming 也都consistent, 还写log, 上了一些ut。
现在的办法是用一个try catch 把所有code, 都包裹起来,能看到error, 但是无法定位error, 除非用debug tools一点一点run
谢谢大家
vangoc 发表于 2023-04-28 09:23

我觉得如果要马上上线了,那技术层补救的方法有限。尤其是你们那里就你一个程序员。 只有一个程序员的麻烦的地方在于,你说一些技术上的困难或潜在的问题,你找不到别人在支持你,因为剩下的人毛也不懂。
如果是我,除了技术层,我会做两件事, 第一,说服你老板至少找个人进行全面high level功能测试,这样至少能看看需求和implementation是不是一致,而且这个人也能share一部分责任。 第二,我不知道你这是整个产品上线,还是说一个feature上线, 我假设是功能上线,那你能不能加个switch, 万一挂了的话能把这个功能关掉。
avatar
pop
16 楼
楼主的公司居然就只有一个程序员,连测试啥的都没有, 唯一的程序员还是一个菜鸟程序员,估计是看中了新手比较便宜。 然后不懂行的老板还非常严厉,一个劲push赶紧上线。 不知道做的到底是啥,不过感觉就算仓促上线也会问题多多,到时候还是楼主一个人挨骂。
感觉这个公司没啥前途,有机会赶紧跳船跑路吧。
avatar
小气蔻蔻
17 楼
最好的办法就是提高自己水平,成为大神。
avatar
nickbear
18 楼
上integration test,一般框架都有对应的包实现,可以模拟真实的request 上线至少要搞个blue green deployment,有问题了可以马上切换回来 基本的metric和health check要有,有问题可以马上发现
avatar
molly233
19 楼
不到20个人的私人小公司,只有我一个程序员
没人做测试,而且可以用来测试的样本非常少,
老板非常严厉,要求马上上线,压力山大
请问如何让程序尽量减少bug,或是在log内有了error msg, 能快速的定位到错误代码的那一行?
已经尽量让代码简洁了,naming 也都consistent, 还写log, 上了一些ut。
现在的办法是用一个try catch 把所有code, 都包裹起来,能看到error, 但是无法定位error, 除非用debug tools一点一点run
谢谢大家
vangoc 发表于 2023-04-28 09:23

不写test 害人害己。写完测试覆盖率90%才算写完了,要不然半成品都不是,怎么敢直接production, 太粗糙了。
同建议跑路,感觉像转行的人什么都不懂在乱搞
avatar
xiaoywz
20 楼
楼上那些唧唧歪歪unit test的,明显没在小公司干过。
avatar
千渔千寻
21 楼
回复 1楼vangoc的帖子
这老板真不行。程序都是试错试好的。老司机出错少,那是因为以前踩坑多。不愿花老司机的钱,就只能这质量。
avatar
hoxu
22 楼
写 test 是正解。
avatar
Vinky
23 楼
不写test 害人害己。写完测试覆盖率90%才算写完了,要不然半成品都不是,怎么敢直接production, 太粗糙了。
同建议跑路,感觉像转行的人什么都不懂在乱搞
molly233 发表于 2023-04-28 11:24

怎么老觉得整天国人怼国人?!怎么是乱搞?!能给点意见就最好,不给就不要太Mean。你不转码,别人天天转码,国人转码就动了你的蛋糕?!
avatar
dalianyin
24 楼
最好的方法就是离开这个小作坊 去大厂取几年经
avatar
幸运之神
25 楼
你以为大厂行?大厂每个组基本只有一两个顶着干,其他就混饭吃。
avatar
letgogogo
26 楼
楼主的公司居然就只有一个程序员,连测试啥的都没有, 唯一的程序员还是一个菜鸟程序员,估计是看中了新手比较便宜。 然后不懂行的老板还非常严厉,一个劲push赶紧上线。 不知道做的到底是啥,不过感觉就算仓促上线也会问题多多,到时候还是楼主一个人挨骂。
感觉这个公司没啥前途,有机会赶紧跳船跑路吧。
pop 发表于 2023-04-28 11:11

这公司是火坑,楼主能跑就跑吧
avatar
jack54321
27 楼
楼主的公司居然就只有一个程序员,连测试啥的都没有, 唯一的程序员还是一个菜鸟程序员,估计是看中了新手比较便宜。 然后不懂行的老板还非常严厉,一个劲push赶紧上线。 不知道做的到底是啥,不过感觉就算仓促上线也会问题多多,到时候还是楼主一个人挨骂。
感觉这个公司没啥前途,有机会赶紧跳船跑路吧。
pop 发表于 2023-04-28 11:11

其实,这种公司,完全不需要 雇个人 自己从头写。
看哪个好的,完全可以买一个 类似的架构,在那个基础上 再 customize 一下 就可以了
avatar
大喜妞
28 楼
Try Amazon Code Whisperer。能让你码的更快。
avatar
wenxinhemu
29 楼
先画流程图
avatar
gokgs
30 楼
楼上那些唧唧歪歪unit test的,明显没在小公司干过。
xiaoywz 发表于 2023-04-28 11:26

是的,我早就一针见血的指出了。
avatar
njbaby
31 楼
我也遇到过这个情况,新手小公司,程序可以run但是,没人可以帮着测试,还要上线,压力太大,还是一走了之。建议去一个大点公司,最好有个team, 可以得到一些指点和支持。
avatar
ted.hanks
32 楼
unit test? are you guys kidding?
startup 都是 0 unit test, 直接 production. 哈哈。
gokgs 发表于 2023-04-28 10:58

avatar
gokgs
33 楼
我也遇到过这个情况,新手小公司,程序可以run但是,没人可以帮着测试,还要上线,压力太大,还是一走了之。建议去一个大点公司,最好有个team, 可以得到一些指点和支持。
njbaby 发表于 2023-04-28 14:05

关键是公司的产品是什么, 要是 碰上早期的 google, fb, 你梦里都可以写 code.
avatar
蓝雪花
34 楼
写程序出bug,那是太正常不过的了,也创造了不少工作机会,lol 说正事。第一,version control,每次递交的code都有记录,可以返回到之前到任何版本,出了错误,可以和之前到版本对比调试。第二,建立regression system,也就是一个包含很多testcase的系统,coverage要广,每次提交code之前都跑一下这个regression,没有出错,才可以提交code。 这些,在大点的公司,都是有专门的team做的,楼主一个人,量力而行。
avatar
Yourdad
35 楼
就你一个程序员 还是快逃吧 老板也不知道程序怎么回事 没有理解
avatar
chmod999
36 楼
起码来个qa吧?老板自己来当qa也行啊 啥都不管眼一闭就要成品的是没脑子吗?
avatar
J.X
37 楼
一个程序员的公司,还敢有程序上线?还有客户敢用?你一走,公司就没有人懂了,还不完蛋?
avatar
pigluo
38 楼
不到20个人的私人小公司,只有我一个程序员
没人做测试,而且可以用来测试的样本非常少,
老板非常严厉,要求马上上线,压力山大
请问如何让程序尽量减少bug,或是在log内有了error msg, 能快速的定位到错误代码的那一行?
已经尽量让代码简洁了,naming 也都consistent, 还写log, 上了一些ut。
现在的办法是用一个try catch 把所有code, 都包裹起来,能看到error, 但是无法定位error, 除非用debug tools一点一点run
谢谢大家
vangoc 发表于 2023-04-28 09:23

根据我们组的经验,很多时候bug太多,并不是程序员本身的写代码的能力,而是用户需求没做好。
看你们公司那么小,很多工作应该都是 ad-hoc 临时起意的,或者 requirement 没有定义好,或者根本就没有 requirement。老板有个大概的需求在脑子里,给你大概讲一下,你的理解,也许只有20%和他想的重合。因为他也没有给你细节和各种 use cases,这样看来来就好像你做了东,忘了西,顾了右,落了左。
有经验的程序员,或者说在那个公司工作久了,就会意识到,哦,这个地方我要注意一下,或者,问一下同事,某些 use case 需不需要,需要什么样的结果,这样 design architecture 的时候,就会注意到。
没经验的,或者在公司很短时间的,因为对公司产品不熟,不少 business logic 不了解,看起来就好像人能力不行,其实,他们写的代码本身根本没有问题,只是设计构架的时候,很多东西没有考虑到。
avatar
pigluo
39 楼
其实共公司再小,都应该有两个程序员吧,相互 code review,才能发现漏洞。否则,全都靠QA 黑盒测试,好多问题无法暴露。
avatar
honghua
40 楼
mark .....
avatar
mylittle9
41 楼
没人测只有自己测。光unit test肯定不行啊。 你得做end to end,和environment test。有负载的要加load. 功能测完得测性能,否则一上load就完蛋。

再牛的程序员也写不出bug free的大型程序。都是测出来的。
avatar
pigluo
42 楼
try-catch尽量少用,除非你真的确定知道你能catch到什么exception以及你有办法处理那些exception。有UT的情况下,如果不用try-catch,这些错误很可能UT就能发现;很多时候try-catch只会把小毛病藏起来,然后拖成大毛病。
通过log来定位到底哪一段出了问题的常见做法是,在函数里定义一个局部变量,一开始初始化为零,然后在每个可能出问题的那一行代码下面把这个变量加一,最后dump log的时候把变量值写进去。这样你大概就知道是什么位置出错。
coalpilerd 发表于 2023-04-28 09:40

哈哈,我组里有个娃,特别爱用 try-catch,偷偷摸摸把exception 吃了,又不throw,他所谓的 fail gracefully,结果就是测试初期,看不到问题,程序从来不 crash,很多东西不能用,最后一分钟才测出来 (QA黑盒测的,小朋友没写 unit test,后来我们要求所有人都写 unit test)
avatar
eragshs
43 楼
unit test? are you guys kidding?
startup 都是 0 unit test, 直接 production. 哈哈。
gokgs 发表于 2023-04-28 10:58

哈哈哈连dev环境都没有的
avatar
eragshs
44 楼
一个程序员的公司,还敢有程序上线?还有客户敢用?你一走,公司就没有人懂了,还不完蛋?
J.X 发表于 2023-04-28 16:02

这种应该就是做公司内部的应用程序的,就算下线了也没啥,公司照样可以转
avatar
eragshs
45 楼
楼主的公司居然就只有一个程序员,连测试啥的都没有, 唯一的程序员还是一个菜鸟程序员,估计是看中了新手比较便宜。 然后不懂行的老板还非常严厉,一个劲push赶紧上线。 不知道做的到底是啥,不过感觉就算仓促上线也会问题多多,到时候还是楼主一个人挨骂。
感觉这个公司没啥前途,有机会赶紧跳船跑路吧。
pop 发表于 2023-04-28 11:11

其实这种老板很好相处,都是楼主一人说了算,好爽啊!
avatar
poppyjasper
46 楼
要自己弄一些QA cases
否则,很难做的

avatar
poppyjasper
47 楼

应该有免费的version control软件

avatar
dalianyin
48 楼
你以为大厂行?大厂每个组基本只有一两个顶着干,其他就混饭吃。
幸运之神 发表于 2023-04-28 12:47

不用自己干 看别人干就行 他现在这种情况 不仅吃不到猪肉 连🐷长什么样都看不到
avatar
mt.everest
49 楼

应该有免费的version control软件


poppyjasper 发表于 2023-04-28 16:50

git啊
avatar
poppyjasper
50 楼
我以前也在start up干过
QA可以自己做,就是把全部成功案例走一遍,再finalize

avatar
gokgs
51 楼
其实大部分 startup 一开始的程序应该是很简单的, 基本功能搞定了就行, 各种 edge case 慢慢加。
avatar
webdriver
52 楼
一个行业一个坑,即使老程序员,换个坑也需要不少时间熟悉 。。。
avatar
lala_2009
53 楼
回复 1楼vangoc的帖子
这样的公司有点可怕,快逃吧。
avatar
guoguosusu
54 楼
感觉让你一个人写一个debug tool根本不现实,也没时间写unit tests.至少多写一些log,log 写清楚问题是什么
avatar
Hesterhql
55 楼
一开始程序都还挺正常的 但是经不起后期客户脑洞大开
avatar
chickenrib
56 楼
程序员不是谁都可以做的。楼主是个菜鸟,而且不像是那种可以自我成长的,还是去一个有人带可以学习成长的公司吧。
avatar
Finallz
57 楼
Unit test + integration test + end to end test, full CI/CD
相关阅读
2023年4月28日(周五)冯站长之家三分钟晚间新闻追剧:Doc Martin 及其他搬家公司好贵呀在美国交税什么情况下可以用信用卡?这可能是省钱的好办法哟~加鹅好deal,好多款式6折左右,这件 Rossclair 差不多55折铁人三项正式禁止厚底神鞋参赛在自己家院子里吹树叶也会被枪杀暂停ChatGPT研发不是应对风险的好办法房客拖欠房租,今天说热水器坏了,要给他修吗?东北菜量多又好吃,为啥挤不进中国八大菜系呢?这条裙子有装嫩的嫌疑吗?旅游暴走合适吗?沈阳老乡给我个红花君子兰大苗 我和我姐说了回国之旅,小区里的花店与宠物店地质局最新研究:今年LA极可能发生大地震早鸟价即将结束!不知该怎样解答孩子的“十万个为什么”?这里有个不费爸妈的好办法!墨西哥度假是不能去了,坎昆再次爆出恐怖命案看到一个视频揭露拿绿卡的可怕新途径🤣一个防止丢钥匙的好办法→美国迈阿密(Miami),港口夜景本周值得买 | 这儿有个五一吃淄博烧烤不排队的好办法大家有飞蚊症floaters吗非理工的天才小孩的曲折道路问个笨问题,也许很幼稚218元涨到658元!民宿五一为涨价谎称因嫖娼被查封【冯站长说安全】2023年4月28日国际要闻简报,轻松了解天下事(2023年4月28日)现在回国外籍的真的要去派出所报告吗?请大家推荐比较firm的床垫,北美这边的都太软了,感觉整个人陷进去趁回国探亲大潮,想撸一种可以免费做机场休息室的信用卡印度人婚礼都要花几十万刀?吴冷西谈庐山会议FED五月份要升息一码?根除烦恼的好办法2023年4月28日中国各领馆美国签证预约最新时间!取悦美国会,尹锡悦演讲大谈长津湖战役作为男人,还是要在国内发展Hungry Jack’s发布新的优惠券啦!有效期:2023年3月28日 - 2023年6月26日斯洛文尼亚首都卢布尔雅那(Ljubljana),街边窥探【胡思乱讲】我应该吃喜马拉雅盐吗?911飞机上华裔空姐邓月薇,临终前20分钟留下一份录音,还原真相炸胡瓜鱼,咖喱牛肉炖土豆,木耳炒粉皮儿
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。