关于 BUG 的一些感想

对于我们开发,谁也不能保证自己永远不会出现BUG,然而怎样尽可能的避免BUG呢?从自己的一些角度出发记录下,最近自己所犯的错误, 不谈具体的出现场景,但开发中确是可以谨记的。

  • iOS 最常出现的 BUG
  • 具体编写代码时的容易忽略的问题

一、 iOS 最常出现的 BUG

  • 1-1、EXC_BAD_ACCESS 访问了一个不存在的对象
    感觉这个 BUG 出现的几率应该是最高的吧, 各种提前释放啊
    或者说忘记给对象做防空处理啊,涉及到到东东好像太多了

  • 1-2、-[__NSArrayI objectAtIndex:] 数组越界
    很多时候后台返回的不一致,或者说自己某处写死了,
    所以这个错的第一原则,就是相对应的数组长度不要写死了
    另外注意可变数组不要添加空的对象
    在具体使用时,长度判断是很有必要的,常常注意的。

  • 1-3、unrecognized selector sent to instance 该对象找不到其方法
    例如 viewController 没有直接的 Push 方法,需要 viewController.navigationController 才有,而 viewController 直接调用 Push 方法就会出现这个错误的。
    就是该对象不具备该功能,我们却莫名其妙让其干了这个事情,该对象干不了,系统自然生气了。
    平常中我们可能是直接引用的时候,对象不知不觉成了我们不想要的对象啦。。。

个人认为这是线上最容易出现的三种问题,其他内存暴涨,多线程相关、堆栈等问题倒还是相对来说是少的。
这就是我们对于临界条件需要注意判断,毕竟常见的 UI 问题 或者流程问题,基本测试还是可以发现的。

二、 具体编写代码时的容易忽略的问题

  • 2-1、调用公共代码时
    很多时候我们会调用一些公共的模块,一些老的通用代码,正常操作下都是好的,但是假如不能跑遍所有情况的流程下,却是可能有问题的,毕竟不是自己写的嘛
    例如这次我们的一个跳转模块,就是因为我写的新需求切换了一个新的 TabBar, 导致个别跳转直接崩溃,但是之前测试的时候,又没有测试到位,毕竟跳转类型是很多种的,我在测试其4种类型后就没有测剩余的两种,然而就这样漏了,这样出问题了。
    所以这也是很多大公司一般不轻易用他人的第三方库的原因之一咯

  • 2-2、发版本前的改动
    在发版本前,一般之前已经有啦一个完整的测试验收了。
    但是不排除测试或者自己突然发现一些地方流程或显示是可以优化的,突然要改的
    此时怎么办呢?我一般也会去操作,觉的自己是可控这块代码的,但是此时却是要小心咯
    因为我们第一次完成时整个的思路通常是更完整的,到验收之后的再改,很可能漏掉一些细节的,当然这也不是我们应有的工作流程。
    这也就是很多时候,我们改一个 BUG 时,却莫名的产生了新的BUG,就是同样的理由吧。
    而且这个时候,无论是测试和个人都不是最好的工作状态,急于上线,时间紧迫的那种感觉。
    很多时候你觉自己是可控的,但是事实并不如此!
    此时你我应该注意,一般的不影响主流的问题在此时可以是不改的!

你可能感兴趣的:(关于 BUG 的一些感想)