测试驱动开发定义
参考书籍: 《重构-改善既有代码的设计》、《测试驱动开发》kentback、《实现模式》
用例子讲解:https://blog.csdn.net/MPU/article/details/1339958
idea快捷键总结(先用好开发的利器)
以下快捷键均出自mac book pro 13.3寸键盘
- 新建类:command + 1调出project版面,通过上下左右键定位到需要新建的文件价路径下,command + n 即可新建类
- 查找文件:shift + command + o
- 查找class: command + o
- 全局查找内容: command + shift + f
- 看类所包含的方法 : comand + 7 , 然后在方法显示框中可以搜索方法
- 生成方法: command + n
- 跑一个文件所有单元测试的快捷键:control + shift + r / control + r
- 调试代码: control + d
- 提取代码option+command+m
- 切换不同的类窗口(替代方案,最近文件): command + e
- 格式化代码:option+command+L
- 全选行(从光标开始到行尾):shift + command + 方向键盘(左或右) / 不带shift , 只把光标移到行尾而不选中 ; shift + 方向键盘(批量选中代码) ; command + shift + 上/下 ,把代码移上或下
- 偏好设置:command + ,
- 复制光标所在行:command + d
- 光标回到上次/下次浏览处:command + [] (左括号回到上次光标停留处,右括号回到下次光标停留处)
- 跳到方法定义: command + b
- 跳到方法实现:option + command + b
-调出错误解决建议: option + 回车 - 关闭当前类窗口:command + w
- 快速跳转到错误处: f2 (fn 然后touchbar上会出现f2)
- 生成try catch : option+ command + t
刻意练习
刻意练习包含三个要素:
1、多次重复的练习;
2、针对自己不足的领域练习;
3、每次练习后对结果反思。
在这个简单的项目中,刻意练习能帮助我们显著提高编程速度。记住这个节奏,它是你学习一切能力的节奏
参数解析器
题目
初始需求
我们经常会遇到需要解析命令行参数的场景。如果没有趁手的工具,我们可以自己写一个,自己想办法处理传给main函数的参数。
传入一个程序的参数包含了“标记”(flag)和“值”(value)。标记都是一个字母,前面加上“-”号(例如“-p”这样)。每个标记可以有一个值与之对应,也可以没有对应的值。
我们要开发一个解析器(parser)来处理这些参数。这个解析器需要一个参数结构(schema)来描述“这个程序应该接受哪些参数”的信息,包括:
应该有几个标记;
每个标记应该是什么类型;
每个标记的缺省值是什么。
参数结构指定好以后,就可以把实际接收到的参数列表传给参数解析器。解析器会首先验证参数列表是否与参数结构相匹配。然后,程序就可以向参数解析器查询每个参数的值(根据参数的标记名)。返回值的类型应该与参数结构中规定的类型相一致。
例如,程序接收到的参数是这样:
-l -p 8080 -d /usr/logs
那么对应的参数结构应该规定3个标记:l、p、d
l(logging,是否记录日志)标记没有与之对应的值,这是一个布尔型的标记,如果传入了“-l”就为True,否则为False。
p(port,端口号)标记的值是整数型。
d(directory,目录)标记的值是字符串型。
如果参数结构中规定了的标记在实际的参数列表中没有出现,那么就应该返回合理的缺省值,例如布尔型的缺省值可以是False,数值型的缺省值可以是0,字符串型的缺省值可以是空字符串。
如果实际给出的参数与参数结构不匹配,需要给出良好的错误信息,解释清楚出错的原因。
扩展需求
扩展代码,支持列表类型的参数。例如下列参数中:
-g this,is,a,list -d 1,2,-3,5
g标记对应的是字符串类型的列表([“this”, “is”, “a”, “list”]),d标记对应的是整数类型的列表([1, 2, -3, 5])。
代码应该具有良好的可扩展性,这样在添加新的值类型时才会简单明了。
参考
https://mp.weixin.qq.com/s/DNrZ5OJlmwjfIT97Cu9TSg
任务拆解
任务拆解(我的拆解):
1、分解输入字符串
2、分解值(列表情况)
3、处理异常输入情况
任务拆解(教程中的拆解方案):
1、把命令行字符串拆分成main函数可用的字符串数组
2、把字符串形式的Schema解析成对象
3、根据Schema和参数字符串数组获取参数值
像机器一样思考:
http://insights.thoughtworkers.org/think-as-a-machine/
重新拆解任务
输入:参数结构字符串(schemaText) 请求参数(paramsText)
1、根据参数结构字符串 得到参数结构
2、根据请求参数字符串 得到请求
3、根据标记取出值