第2章 个人技术和流程
单元测试
单元测试
回归测试
回退操作
效能分析工具
先用抽样的方法找到效能瓶颈所在,然后对特定的模块用代码注入的方法进行详细分析
个人开发流程
任务清单
计划
- 明确需求和其他相关因素,指明时间成本和依赖关系
开发
- 分析需求
- 生成设计文档
- 设计复审(和同事审核设计文档)
- 代码规范(为目前的开发定制合适的规范)
- 具体设计
- 具体编码
- 代码复审
- 测试(包括自测,修改代码,提交修改)
- 记录用时
报告
- 测试报告
- 计算工作量
- 事后总结
- 提出过程改进计划
软件设计的原则
单一职责原则
一个模块(类)应该只有一个导致它变化的原因,一个模块应该完全对某个功能负责
开放-封闭原则
- 允许拓展。当应用的需求发生改变时,我们可以对模块进行拓展,从而改变模块的功能
- 不允许修改。对模块行为进行拓展时,不必改变模块的本身
程序的健壮性
数据
属性拓展
- 超过64位的数字
数量拓展
- 十万条数据
维度拓展
- 多维数组
其他属性拓展
需求
形象的显示数据处理的过程
维度拓展
数量拓展
增量改进
用户
让用户更喜欢这个软件
- 记住上次的状态
- 自动展现上次文档最后编辑的地方
多用户
多语言
安全性
软件构建
平台的迁移
多语言接口
增量升级部分模块
实践
工作的细分
基本功能
拓展功能
高级功能
如何保证质量——回归测试
保证在加入新功能的过程中,已有的功能可继续工作,我们需要建立起一系列测试文件
第3章 软件工程师的成长
软件工程师的成长
- 积累软件开发相关的知识,提升技术技能
- 积累问题领域的知识和经验
- 对通用的软件设计思想和软件工程思想的理解
- 提升职业技能
- 实际成果
软件工程师的思维思维误区
分析麻痹
不分主次,想解决所有依赖问题
过早优化
过早扩大化/泛华
画扇面——调侃目标和远景
技能的反面
通过不断的练习,把低层次的问题解决,变成不用经过大脑的自动操作,然后才有时间和脑力来解决较高层次的问题
第4章 两人合作
代码风格规范
- 4个空格的缩进
- 每个{}独占一行
- 不要把多个变量定义在一行上
- 一个类型的成员变量用
m_name
来命名 -
Pascal
:所有的类型/类/函数名 -
lowerCamel
:变量 - 注释是为了解释程序做什么(What),为什么这么做(Why),以及要特别注意的地方,只用ASCII字符,不要用中文
代码设计规范
- 函数:只做一件事,并且要做好
- 单一出口
- 不要在构造函数中做复杂的操作,简单初始化所有的数据成员即可
代码复审
看代码是否在代码规范的框架内正确地解决了问题
长远的问题
- 这么修改之后,有没有别的功能会受影响
- 项目中还有别的地方需要类似的修改吗
- 有没有留下足够的说明,让将来维护代码时不会出现问题
- 对于这样的修改,有没有别的成员需要告知
- 导致问题的根本原因是什么?我们以后如何能自动避免这样的情况再次出现
网友评论