改bug的勇士终将成为写bug的恶龙。
代码屎山的出现,没有一个程序员是无辜的。
年轻人,请学会在bug里躺平~
不是程序员的bug!程序员并不own bug!你写的任何一行程序都属于公司,包括bug!
代码check in之后,出现bug或是新添加的features都会先定优先级的,不是每个bug都会受到平等对待的,先修的肯定说百万级的bug,而且一般都会assign出来,谁负责去修。
然后修bug的过程,那估计能修的bug千篇一律,不能修的bug各有各的奇特之处。修bug估计还得写design doc,然后大家审阅一下才具体开工。
据说修bug就是shi山,尤其是祖传代码,修一个bug,就修漏另外几十个。明知有bug却不能改代码才是最骚的。
bug无穷无尽?你的职业生涯也是无穷无尽呢。你的职业生涯多长,你面对bug的时间就多长。除非你不再写代码,不然你还是得debug。所以先放下心理压力,听听我这个码农的一些经验。我做过之前游戏开发,现在做数据挖掘,开发的领域多了,什么奇怪的bug都见过了。
解决bug这个事情无法逃避。bug解决不了时,不妨试试下面几个方法:
下面是我个人调试的经验,纯记忆,未能列举所有方法,欢迎补充:
如果说你想更深入的研究怎么调试,解决bug,或者就要一本手册放在桌边激发灵感,那么这本书可以试试。这本书主要讲的是Linux内核调试,但你可以看看目录,看看有没讲到自己开发的领域的:
就是在程序的调试或测试过程中,操作人耐心地向小黄鸭解释每一行程序的作用,以此来激发灵感与发现矛盾。什么是小黄鸭?
没错,就是这玩意。当然,你不一定用小黄鸭,你可以用任何你觉得可爱的小公仔,甚至对空气解释都行。
结对编程是一种敏捷软件开发的方法,两个程序员在一个计算机上共同工作。 一个人输入代码,而另一个人审查他输入的每一行代码。你找 同级/上级/下级 都行,如果你觉得对方能帮到你,就让ta过来帮帮你。
也不用这么哲♂学的方式的。就正经的坐在工位上,让同事辅助一下你,或者让同事来写,你来解释。
防范于未然永远都是上策。这里引入一个概念,叫做技术债务。
技术负债(英语:Technical debt),又译技术债,也称为设计负债(design debt)、代码负债(code debt),是程序设计及软件工程中的一个比喻。指开发人员为了加速软件开发,在应该采用最佳方案时进行了妥协,改用了短期内能加速软件开发的方案,从而在未来给自己带来的额外开发负担。
当然,bug这东西是不可能灭绝的。当通过按照代码规范编码,做做单元测试等方式,来减少bug,以及降低查bug难度。
还有一个预防方法,就是慎用try...catch。并不是说不能用,只是说不能滥用。因为当你用try catch时,你就有了关于输入的预设,如果你这个输入只用一次,那还好,如果你的这个输入会在程序内重复调用,那么就可能会出现你预设之外的用法,尤其是这个输入还被其他程序员用了,那出bug时,找源头就麻烦了。
如果你发现问题难以定位,但用try...catch能掩盖过去,那么你只是留下了一个新的技术债务,问题迟早会在别的地方爆雷的。
既然bug是永远解决不完的,那么安排优先级这个事,就不要揽在自己身上,交给项目经理协调就好。即使这个bug可能是你的代码造成的,也并不一定需要自己解决;当然不是你造成的代码,也可能要你解决。要记得team work,你的代码成果属于整个team,整个公司,当然bug也应该属于整个team的。当然不是让你丢锅的意思,只是想让你放下心理负担,这样才能更好专注手头的事。
所有的bug都提交jira ticket,计划时间,让项目经理来协调。当然,这过程你需要和项目经理沟通你解决第几号bug需要多久。建议你报上去的时间是你预计的时间x2。不是鼓励你偷懒,而是在实际过程中,你需要一定的时间冗余,以预防意料之外的事。