软件工程读书笔记(六)——结对编程那些事
现代软件产业经过几十年的发展,已经形成了项目组合作的形式,几乎不存在一个人完成所有工作的情况,一个团队最少有两个人组成,那么两人合作的过程中有什么需要关注的地方呢?
一、 代码风格规范
程序员写的代码是给电脑看的,能运行就是好代码;但对于结对编程来说,能让另一个人理解你的代码,迅速掌握你代码的逻辑关系至关重要,如果代码格式写成下图这种艺术形式,可就让人头疼了。
/*
_ooOoo_
o8888888o
88" . "88
(| -_- |)
O\ = /O
____/`---'\____
.' \\| |// `.
/ \\||| : |||// \
/ _||||| -:- |||||- \
| | \\\ - /// | |
| \_| ''\---/'' | |
\ .-\__ `-` ___/-. /
___`. .' /--.--\ `. . __
."" '< `.___\_<|>_/___.' >'"".
| | : `- \`.;`\ _ /`;.`/ - ` : | |
\ \ `-. \_ __\ /__ _/ .-` / /
======`-.____`-.___\_____/___.-`____.-'======
`=---='
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
佛祖保佑 永无BUG
*/
所以,需要制定一套行之有效的代码风格:简明、易懂、无二异性。
这里记录一下邹老师总结的代码风格规范:
- 缩进使用4个空格,因为tab在不同情况下会显示不同的长度。
- 行宽100。
- 复杂表达式中用括号表达优先级,使逻辑清晰。
- 断行使用如下格式:
If(condition)
{
DoSomething();
}
Else
{
DoSomethingelse();
}
- 一条语句放一行方便调试时设置断点。
接下来着重讲一下命名方案:匈牙利命名法,基本原则是:变量名=属性+类型+对象描述。举例来说,表单的名称为form,那么在匈牙利命名法中可以简写为frm,则当表单变量名称为Switchboard时,变量全称应该为 frmSwitchboard。这样可以很容易从变量名看出Switchboard是一个表单,同样,如果此变量类型为标签,那么就应命名成 lblSwitchboard。同时注意要避免过多的描述,如果信息可以从上下文中得到,那么此类信息就不必写在变量名中。
二、 代码设计规范
- 函数,最重要的原则:只做一件事。
- 函数需要有单一出口,可以借助goto达到这一目的,有助于程序逻辑的清晰体现。
- 错误处理:对传入参数验证正确性,对指针验证其正确性。
- 如果只是对数据进行封装,用struct即可不必使用class。
- New之后记得要delete。
三、 结对编程的优势
1、互相鼓励,不容易沮丧:团队工作能增加成员的工作积极性。因为在面对问题的时候,会有人一起分担,共同尝试新的策略。
2、互相监督,不容易偷懒:两个人一起工作需要互相配合,如果想偷懒去干别的,就会拖延工作进度。
3、互相学习编程技巧:在编程中,相互讨论,可以更快更有效地解决问题,互相请教对方,可以得到能力上的互补。
4、可以培养和训练新人:让资深开发者和新手一起工作,可以让新人更快上手。
5、多双眼睛,少点 bug:两人互相监督工作,可以增强代码和产品质量,并有效的减少 BUG。
在学校中较难实现真正意义上的结对编程,只能实现两人合作,合作过程中出现分歧,如何高效解决,给对方积极的反馈。三明治法是一个不错的选择:“三明治”式的批评,是指对某个人先表扬、再批评、接着再表扬的一种批评方式。由于这种批评方式并不是一味地采取批评的手段,而是在二层厚厚的表扬之间夹杂着批评,因此被称为“三明治”式的批评。
例如电视剧《西游记》中,在孙悟空保护唐僧取经的过程中,佛祖曾说过三句话:
你这泼猴,一路以来不辞艰辛保护师傅西天取经。
这次何故弃师独回花果山,不信不义。
去吧,我相信你定能发扬光大,保护师傅取得真经。
这三句话褒中有贬,既肯定了孙悟空前面保护唐僧的所作所为,又批评了他这次的不信不义,最后提出目标和期望,恰到好处地激励了孙悟空的斗志。
在团队合作中掌握了适当的建议方式,使团队能和睦融洽,才是生存之道。