程序没有错误就是谬论,世间难求。假设有一个没有任何错误的程序,世界将不复存在。----《编程之禅》Part4(Gold)Section2helloworld是人类已知最早的无bug程序,但是在我们日常的开发中,需求不可能像helloworld那么简单,往往Coding需要五分钟,debug需要两个小时。在讨论如何减少bug之前,我们先讨论一下哪些场景容易出现bug。一、BUG产生原因:由需求中的固有问题引起的代码缺陷。这类问题的根源是需求或者产品没有分析清楚,把责任推给了产品,但是作为开发者,参与需求分析是很有必要的。b.代码实现和需求差异很大的缺陷。这种问题也比较普遍,开发人员的思维和需求或者产品人员的思维还是有很大差距的。C。非常复杂的需求代码的实现在某些逻辑上存在缺陷。这种问题可能是开发者不想做到完整,也可能是需求太复杂,在系统设计阶段没有分析所有情况。d.需求变更后重构原有业务代码,对原有业务不熟悉。F。系统架构的缺陷。这类问题一般很少见,如果出现也是大面积的。G。对框架特性、数据结构、语言不熟悉导致缺陷。H。外部原因、操作系统或数据源。那么如何避免bug,尤其是iOS,AppStore审核提交周期不短,你还记得那些痛苦的线上bug经历,半夜起来修bug,提交后审核好几天,所以有必要总结一下如何避免bug,以下是我的一些总结,欢迎补充?详细无歧义的需求规范和业务逻辑?合理的架构和模块?清晰清晰的模块间接口?不要复制代码,摘录尽量共享部分,重复修改代码时容易造成不一致。不要轻易重构代码。每次重构时,尽量确保重构的业务在这个QA测试用例的覆盖范围内。在了解同事的业务代码的同时尝试更改代码。小组成员业务代码处理边界条件,处理非法参数,从不相信数据的可靠性,考虑各种逻辑分支限制函数长度,编写易于阅读和维护的代码,不使用过多的技巧,以及很难理解的代码,很可能在修改时出错。使用assert,正确使用异常处理,捕获可以处理的异常。万一真的出现BUG,不要惊慌,好好利用《甩锅大法》,代码对,接口错,接口对SDK的错,SDK的错,SDK的错编译器,编译器故障,虚拟机故障,虚拟机故障,操作系统故障,操作系统故障,硬件故障,硬件故障,故障电磁干扰的,总之,别自责了哈哈哈,这锅哥得接!!***我个人认为写一个没有bug的程序应该是在需求不变的情况下进行的。之所以在产品的持续维护中出现bug,是因为在早期的软件设计中没有考虑到后续的需求变化。由于需求的变化,不可能每次需求变化都重新设计架构和软件,导致软件在bug发现和消除中循环软件生命周期,直到软件下线,所以我们只能不断积累培养经验,培养思维的严谨性,养成良好的开发习惯,减少bug。
