由于该模块界面和业务逻辑都很复杂,并且整个界面设计和业务逻辑都在ViewController(下面简称为VC)里面完成。该VC共有3000多行,一个函数几百张的也有。所以,解决起来真是头疼。
1. 问题描述
当用户操作计分卡时,分数可能不对,前场和后场的序号也可能不对。也是就说,数据读写造成了错误。
2. 问题分析
分析:这么看来,应该是业务逻辑出现了问题。但是,跟界面的更新有没有关系,也是说不清楚。当遇到这种大量界面和逻辑纠结在一起的情况,一切也就说不清楚了。
3. 解决思路
3.1. 解决方案一
怎么解决呢?现在来说,解决bug是当务之急,至于以后重构,那也是以后的事情。在这个大前提下,怎么切中要害,就是解决问题的关键了。要想解决问题,总要复现问题,这个问题的麻烦之处就在于,问题很难复现。
复现问题:怎么复现问题呢,据说是在操作的时候,横向纵向不停地转屏。最后,传给服务器的数据就错了。也是在这个提示下,曾经出现过一次数据的错乱。但是后来就没有再出现过。很奇怪吧。
3.1. 解决方案二
通过几个关键点的操作来确定问题点
3.2. 降级方案
一开始就要想好一个降级方案,以备解决不出来。
4. 解决步骤:
我从来不相信猜测,除非对程序特别的胸有成竹,或者程序本身特别检查。
那么,我要解决问题,必须复现问题。我就要打印出操作时的数据,这是解决这个问题的核心思想。当我发现什么时候的什么操作导致问题复现时,怎么解决就有了一个明确的方向。
所以我要记录步骤。
4.1.解决尝试一
4.1.1. 打印数据
数据部分有两个,一个是现有数据,一个是修改的数据。我打印出这两个数组即可。
4.1.2. 记录步骤
不在此详述...