由atoi来聊需求分析

当我第一眼看到实现atoi函数的题目时,我是拒绝的。毕竟这是一个简单到不能再简单的题目,作为一名工作一年有余的程序员,这道题应该是手到擒来的。

迅速打开IDE,5分钟之后就完成了这道题。但是在接下来的单元测试中,我的函数不停地失败。先是负数不能通过测试,然后是空格问题,然后是非数字字符……最后我不得改我的函数结构。

在不停地推到从来中,我第一次想到了做寻求分析。首先处理接收到的字符串,将开头的空格全部去掉;然后处理符号位,存储接收到的字符的正负;接着截取字符中数字的有效部分,遇到非数字字符之后的字符就扔掉;然后计算有效部分长度,如果长度超过int的最大长度,直接返回最大(或最小)值;如果小于int的最大长度,那么转换字符串为int值并返回;如果等于int的最大长度,那么逐位比较,大于最大值(或小于最小值)就返回最大(或最小)值;如果逐位比较并没有超界,转化之后返回值。

在理清需求之后,我再开始实现atoi函数,大概就只花了10分钟,需求分析花去了15分钟,意思是我解决这个问题一共花了25分钟,虽然不是一个理想的结果;但是在我做需求分析之前不停返工花去了2、3个小时。所以认为哪怕再简单的需求都有做需求分析的必要,需求分析完成之后可以大大节省我们的时间。这就是我们所说的磨刀不误砍柴工。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,267评论 0 4
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,742评论 18 399
  • 计算机二级C语言上机题库(南开版) 1.m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平...
    MrSunbeam阅读 6,453评论 1 42
  • 留下生活,愿安宁静。 喧嚣的生活是是现在的日常,但我依旧有我追求的安宁和生活,没有那点空闲不代表我就喜欢现在的吵闹...
    画希阅读 329评论 0 1
  • 在Linux文本中有三个文本处理工具分别是: grep:文本过滤(模式:pattern)工具 gre...
    BossHuang阅读 783评论 0 0