由atoi来聊需求分析
2015-07-30 本文已影响88人
猿基地
当我第一眼看到实现atoi函数的题目时,我是拒绝的。毕竟这是一个简单到不能再简单的题目,作为一名工作一年有余的程序员,这道题应该是手到擒来的。
迅速打开IDE,5分钟之后就完成了这道题。但是在接下来的单元测试中,我的函数不停地失败。先是负数不能通过测试,然后是空格问题,然后是非数字字符……最后我不得改我的函数结构。
在不停地推到从来中,我第一次想到了做寻求分析。首先处理接收到的字符串,将开头的空格全部去掉;然后处理符号位,存储接收到的字符的正负;接着截取字符中数字的有效部分,遇到非数字字符之后的字符就扔掉;然后计算有效部分长度,如果长度超过int的最大长度,直接返回最大(或最小)值;如果小于int的最大长度,那么转换字符串为int值并返回;如果等于int的最大长度,那么逐位比较,大于最大值(或小于最小值)就返回最大(或最小)值;如果逐位比较并没有超界,转化之后返回值。
在理清需求之后,我再开始实现atoi函数,大概就只花了10分钟,需求分析花去了15分钟,意思是我解决这个问题一共花了25分钟,虽然不是一个理想的结果;但是在我做需求分析之前不停返工花去了2、3个小时。所以认为哪怕再简单的需求都有做需求分析的必要,需求分析完成之后可以大大节省我们的时间。这就是我们所说的磨刀不误砍柴工。