《程序员修炼之道 - 从小工到专家》读书笔记八
注重实效的项目
1.注重实效的团队
如果个体都是注重实效的,那他对整体起的作用更大。
不要留破窗户:质量是一个团队的问题,作为整体的团队更不应该容忍代码质量的问题,团队必须为产品的质量负责。
煮青蛙:整体中的个人更难觉察到作为团队所存在的问题,需要有每个人担任”水情检测员”,
交流:团队中的开发者必须相互交谈,杰出的项目团队拥有着截然不同的个性,创立品牌,以品牌代表你的团队。
不要重复你自己:有些团队会指定莫个人担任项目资料管理员,负责管理协调文档和代码仓库。
正交性:对于较大的团队,更应该通过功能进行组织划分,而不是工作职务。
自动化:确保一致性和准确的一种很好的方式是使团队所做的每件事情都能自动化。
2.无处不在的自动化
一切都要自动化:我们应该在尽可能多的场景下使用自动化,因为人工流程及不能保证一致性也无法保证重复性。不要使用手工流程。
自动化管理:在一些特定的情况下可以选择适当的工具进行自动化处理。
3.无情的测试
注重实效的程序员会受到找到自己 bug 的驱使,以免以后经受由别人找到我们 bug 带来的羞耻。
早测试,常测试,自动测试。
bug发现的越早越好,进行修补的成本越低,要到通过全部的测试,编码才算完成。
需要进行的测试主要类型有:
单元测试:单元测试时对某个模块进行演练的代码。你的所有模块都必须通过他们自己的单元测试,然后你才能继续前进。
集成测试:集成测试说明组成项目的主要子系统可以工作,并且可以和很好的协同。
验证和校验:检测环境和运行成果资源使用情况。
性能测试:压力测试或者负载测试,主要是用户数,连接数或每秒的事务数。
可用性测试:也是产品项的测试,需要分析和调研,需求是否是有用的。
怎样测试:
回归测试:回归测试通常是测试的后面阶段,新旧功能一起测试,新功能不应该影响旧功能。
测试数据:对于一些特殊场景,测试数据能起到很大帮助。
GUI系统:UI通常不好测试,所以应该做好解耦,将逻辑和视图拆分开进行测试。
对测试进行测试:故意制造一些bug,观察你的测试系统能否发现。
彻底测试:这里需要强调的是测试覆盖率。要对不同状态都覆盖到。
何时进行测试。尽早测试,而且测试应该是自动完成的,我们在提交代码时就应该保证测试已经全部通过。
4.全都是写
代码要和文档紧密结合,我们要认真对待文档和代码注释,他们不是可有可无的东西。
代码注释:文件中的代码导出的函数的列表,修订历史,文件名,该我呢见使用的其他文件的列表。
可执行文档,即使按照特定格式进行注释,然后利用工具提取注释内容并生成文档。例如 JavaDoc
5.极大的期望
温和的超出用户的期望。
交流期望:用户一开始就会带来他们对所需要的东西的想象来到你的面前,那可能不完整,不一致或者不可能实现。那我们要与客户之间多交流期望,了解他们的需求,而不是一味沉溺在技术的世界里。
额外的一英里:适当制造惊喜,会有些通用性的技巧能让项目获得更好的体验,让客户眼前一亮,比如:
气球式帮助或工具提示帮助,快捷键,彩色化,日志文件分析器,自动化安装,用于检测系统完整的工具等。
6.傲慢与偏见
注重实效的程序员不会逃避责任,相反,我们回了与接受挑战乐于使我们的专业知识广文人知。
当人们看到一段代码上标志着你的名字,期望应该是可靠的,用心编写的,而不是害怕的。