现代软件产业经过几十年的发展,一个软件由一个人单枪匹马完成,已经很少见了,软件都是在相互合作中完成的。合作的最小单位是两个人,两个工程师在一起,做的最多的事情就是“看代码”,每个人都能看“别人的代码”,并发表意见。但是每个人对于什么是“好”的代码规范未必认同,这时我们很有必要给出一个基准线——什么是好的代码规范和设计规范。
一、代码规范
1.代码风格规范。(文字上的规范)
原则:简明,易读,无二义性。(保持简明,让代码更容易读懂)
①缩进(4个空格)
②行宽(可以是100字符)
③括号
④断行与空白的{}行
⑤分行(多条语句分行放,多个变量分行定义)
⑥命名(可以适当的加一些前缀)
⑦下划线(分隔变量名字中的作用域标注和变量的语义)
⑧大小写(区分单词)
⑨注释
2.代码设计规范。
不光是程序书写的格式问题,而且牵涉到程序设计、模块之间的关系、设计模式等等方面。
还有一些跟具体设计语言有关的内容。
①函数(功能)
②goto(单一的出口)
③错误处理
1)参数处理(验证其正确性)
在Debug版本中,对所有的参数都要验证其正确性;
在正式版本中,对从外部(用户或别的模块)传递过来的参数要验证其正确性。
2)断言Assert(验证正确性)
当你觉得某事肯定会是怎么样的话,就可以用断言。
3)如何处理C++中的类
代码复审的目的在于:
1.找出代码的错误,比如:
1)编码错误,比如一些碰巧骗过了编译器的错误
2) 不符合团队代码规范的地方
2. 发现逻辑错误,程序可以编译通过,但是代码的逻辑是错的
3. 发现算法错误,比如使用的算法不够优化,边界条件没有处理好等
4. 发现潜在的错误和回归性错误—当前的修改导致以前修复的缺陷又重新出现
5. 发现可能需要改进的地方
6. 教育(互相教育)开发人员,传授经验,让更多的成员熟悉项目各部分的代码,同时熟悉和应用领域相关的实际知识
结对编程让两个人所写的代码不断地处于“复审”的过程,程序员们能够不断地审核,提高设计和编码质量,可以及时发现并解决问题,避免把问题拖到后面的阶段去。
开发中的复审主要包括:设计复审、代码复审、测试计划复审和文档复审。
这些复审可以在伙伴之间进行,也可以在团队内部进行。
两个人合作的不同阶段
1. 萌芽阶段(Forming) 两人刚刚互相认识,这时大家都有礼貌,一般交流不少,双方彼此并不了解。
2. 磨合阶段(Storming)
3. 规范阶段(Norming)
4. 创造阶段(Performing)
5. 解体阶段(Deforming)
如何正确的给予反馈
1.最外层:行为和后果
行为可以改正,后果可以弥补,还有挽回局面的机会
2.中间层:习惯和动机
被攻击的一方就比较难表白并且澄清动机
3.最内层:本质和固有属性
当攻击深入到核心,被攻击一方已经无法回应
如果软件工程师连一对一的合作都做不好,不能有效地影响同伴,让合作双方都从中受益,提高水平的话,更别提团队合作了,影响了团队合作,从而影响了整个公司的利益。
所以首先要做好两个人的合作