关于代码的那些低级错误,都是血泪的教训

简介: 无论你是初级工程师,中级工程师,高级工程师,甚至是全栈工程师、架构师,都是从零开使一步一步走出来的,想必都会犯过一些低级错误。 那些错误都是怎么发生的,如何避免发生错误呢,看看我们各位资深的程序员以自身为例,告诫我们敬畏每一段代码

无论你是初级工程师,中级工程师,高级工程师,甚至是全栈工程师、架构师,都是从零开使一步一步走出来的,想必都会犯过一些低级错误。

那些错误都是怎么发生的,如何避免发生错误呢,看看我们各位资深的程序员以自身为例,告诫我们敬畏每一段代码

开发权限管理很重要,谨慎对待手中的权限

云栖社区开发者海阔天空yy:曾经经我做过SQL SERVER数据库存储过程程序员。
当时我们每个人本地都有一套测试环境,所以测试的时候都是在本地测试。由于测试数据比较乱,比较多,为了更清楚的看清结果,我会经常TRUNCATE TABLE,写到这里大家可能基本猜出来了。没错!在线上出问题时,由于SQL SERVER 查询分析器可以同时开多个数据库连接窗口,我把线上数据库的窗口和线下数据库的窗口弄混了...所以,线上数据库的一张主要表,被我TRUNCATE TABLE了。。。当时刚执行完,过了1分钟我反映过来了,头脑一片空白。。。没办法,只能反映给了主管,主管听到后难得得没说我什么,马上找相关人员去处理。。。经过了大约1个小时后,原来的数据总算恢复了,但也导致了这个业务1个小时不能用。。。我都不知道我那1个小时是怎么过来的,坐在那里,动也不敢动,搞程序也搞不下去,就在网上搜如何恢复数据,话说当时我都准备好公司把我开了的准备了。

最后结果是,技术总监批评了我们主管,要求部门整改,线上环境严格控制,必须由他把关。
之后主管也找我谈了话,当然批评是少不了的,作为事故,还是罚了500块钱主管罚了1000。
要知道,当时我工资才3500。当时没被开除就算烧高香了吧。。。

事后总结起来,其实这主要还是部门管理方面的问题,我刚入职不久的人就能随便接触生产环境,并且还有很高的权限,这才是最大的隐患。当然个人也有问题,工作再忙也不要急躁,特别是你还在生产环境操作。要慎之又慎。

一定不能隐瞒或甩锅,以解决问题为前提,之后再去review

云栖社区开发者yolo_omg:在写RPC框架的时候,写了很多bug,在这里分享一个比较严重的:客户端连接断开清除请求数据时抛了ConcurrentModificationException,导致连接关闭异常,恰巧又碰到集团要做断网演练,接着就是1个星期内推动全网升级,拉了很多丁丁群,发了很多红包,还好没有触发线上故障。导致后面写if else都要double check了,比如1+1是否等于2,都要写UT进行验证了,然后拉着小伙伴review代码。

发现问题的时候,一定不能隐瞒或者想甩锅,以解决问题为前提,之后再去review!切记!

千万不要在累、疲劳的时候写代码

云栖社区开发者浮生递归:入职不久就有很高的权限,我觉得这不一定跟管理不善有关系。如果一个公司技术人员偏少的时候,新人也有高权限,是没办法的事情。如果小团队也像大团队一样分工很细,很明确,管理的成本会过高,最终导致破产。

有个同事,不小心把线上数据库给删了……还有个同事,没做好安全措施,导致短信被人恶意刷了几十万条,公司直接损失1万多。当然,两位同事都没受到什么处罚。
我自己有次粗心,一个判断没写完整,直接导致准考证生成的座位号不正确。一堆人拿着准考证去考场找不到自己的位置,哈哈。当然,事后客户也没有责怪我,我也觉得比较奇怪的。做错事不是应该受到相应的处罚吗?

写了十几年的代码,就这么一次事故。让我在日后的代码生涯里心细了很多,代码写完后,重要的部分,总是检查检查再检查。测试后的结果也会一再核对。

程序员写代码的时候,状态很重要,千万不要在累、疲劳的时候写代码。这就跟疲劳驾驶差不多,很容易造成事故。有些重要的系统,如果出现问题,是跟疲劳驾驶一样,会直接造成车毁人亡的。比如自动驾驶系统、红绿灯管控系统、航空塔台等。

工作不易,万事需仔细

云栖社区开发者黄一刀:有一回,客户找我说,他有笔收费录错了,要我帮他修改下金额,我一看,小问题,对方又是财务主管,于是二话不说,查询分析器打开,update 。。。set。。。where。。。,选中,一键F5,结果发现where竟然没选中,尼玛啊!赶紧按停止键,死命按鼠标,只怪数据库服务器性能太好,三秒不到就全部执行完毕了,立马吓傻,呆若木鸡,额滴亲娘。由于数据库没有每天都做备份,只能还原到两天前的。第二天,亲自上门找客户,赔礼道歉,还保证下一年免费让他们用一年。还好我是领导,不然绝对得去睡马路。

这次之后,我数据库都会每天都做备份,每次按F5键之前,都会反复看好几遍,语句有没有错,语句有没有全部选中,感觉自己现在都好像有点强迫症。

混饭不易,且混且珍惜,工作不易,万事需仔细。工作上不管什么事都要用心、细心,千万马虎不得,不能拿自己的饭碗开玩笑,要记住,夏天的马路蚊子多,冬天的马路冻成狗。

原先一直认为所谓的流程就是枷锁,现在看来人多力量大,考虑的周全

云栖社区开发者forest10:我遇到最悲伤的事情莫过于直接在线上操作mongodb了。当时自己刚毕业一年,小公司。也没啥操作流程啥的来约束,公司原先是做类似印象笔记类的。当时因为人和文章的映射关系竟然做在了redis里面。但是好死不死的是服务器被某个开发重启了,更关键的是并没有做redis的持久化。后来决定直接把人员映射做到mongodb里面。。。。关键时刻到了,我把好几个人的映射都做错了,导致好多人隐私都。。。。。好吧,我承认,redis重启也是我干的งว

通过这次教训,深刻感受到了流程审批的重要性。还有就是不要轻易动线上环境。

我能早一点会git,那么我也就不需要重新写一次代码

云栖社区开发者尼古拉斯雷:写好的程序没备份,是的,之前不会用控制版本。结果有一天,不小心把硬盘搞坏了,你知道那种感觉吗?
就像从几千米高的悬崖低落下来的感觉,心都凉了。
从此之后,开始学习git的使用方法,每次写完一次代码或者要出去的时候都先提交到远程仓库。
说白了,还是因为技术菜,会的技术太少了。流下了没有技术的眼泪...
备份啊,做事之前先做好备份啊。不然硬盘坏了,你能找谁去,如果,我能早一点会git,那么我也就不需要重新写一次代码了。

各位愿不愿意分享一下你在程序员生涯中遇到的悲伤故事呢,点击进入话题:关于代码的那些低级错误,来分享你的代码经历,优秀分享还有奖品送出。

相关文章
|
7月前
|
设计模式 算法 程序员
程序员为何需要反复修改Bug?探寻代码编写中的挑战与现实
作为开发者,我们在日常开发过程中,往往会遇到反复修改bug的情况,而且不能一次性把代码写的完美无瑕,其实开发项目是一项复杂而富有挑战性的任务,即使经验丰富的程序员也难以在一次性编写完美无瑕地完成代码,我个人觉得一次性写好代码是不可能完成的事情。虽然在设计之初已经尽力思考全面,并在实际操作中力求精确,但程序员仍然需要花费大量时间和精力来调试和修复Bug。那么本文就来分享程序员需要反复修改Bug的原因,以及在开发中所面临的复杂性与挑战。
182 1
程序员为何需要反复修改Bug?探寻代码编写中的挑战与现实
|
测试技术
解决Bug应有的心态和解决方法的一些思路、方法和心得
永远要相信程序是不会骗你的,是自己在处理理逻辑中出问题,而在特定的环境中才会出现或者是自己压根就想不到情况下出现。 前几天在处理一个接口任务时,在测试环境跑是一点都没有,但在正式环境却没有将数据拉下来。没有报任何错误,一度怀疑、抱怨! 还好最后找到问题解决了!
92 0
|
6月前
|
Java 数据库连接
惊呆了!JAVA反射:你的代码竟然能这样“自我修复”?
【6月更文挑战第30天】Java反射允许运行时访问类和方法,模拟“自我修复”能力。当UserService的getUserById方法抛出异常时,通过反射捕获异常并调用handleException进行处理。此示例展示了如何记录错误,返回默认用户对象,而无需原始代码更改。反射提供了一种动态异常处理机制,增强代码的适应性和弹性。
48 0
|
算法 程序员 编译器
当程序遇上困难:程序调试的艺术(VS)
当程序遇上困难:程序调试的艺术(VS)
73 0
|
算法 Java 编译器
Java开发最常犯的10个错误,打死都不要犯!
阅读目录 Array转ArrayList 判断一个数组是否包含某个值 在循环内部删除List中的一个元素 HashTable与HashMap 使用集合原始类型(raw type) 访问级别 ArrayList和LinkedList 可变与不可变 父类和子类的构造方法 “”还是构造方法 未来工作
175 0
Java开发最常犯的10个错误,打死都不要犯!
|
存储 程序员 C++
如果当初学习编程时能有人给我这些忠告该多好
Cecily Carver 是多伦多的一位程序媛,和 Jennie Faber 一起创办了一个游戏制作工作室。她喜欢歌剧、舞蹈和弹钢琴。Cecily 在这篇文章分享她在编程道路上的所感所想,给出很多值得思考的编程箴言以及一些思想误区,比如在你学习编程之前思考一下你的目标、编程不是什么神秘的东西、坚持比方法更重要等,可以让我们在编程路上少走一些弯路,从而有更多的时间学习技术让自己变的越来越强大。
228 0
|
开发者 前端开发
[译] 如何避免我作为初级开发者时所犯下的 7 个错误
我们应该从中吸取教训。在成为高级开发者的过程中,我犯过许多错误。本文讲述了当我还是初级开发者时犯过的 7 个严重错误,以及如何避免这些错误。
895 0
|
架构师 Java 容器
我在系统设计上犯过的14个错
除了自己犯的错以外,也还看过其他同学犯的一些错,这个在后面再写一篇文章来分享下,同时也征集大家印象深刻的推倒重来的系统设计的错
929 0

相关实验场景

更多