对于现代的软件产业,靠一个人单枪匹马已经很少见了,软件都是在相互合作中完成的,如何促进团队之间的合作?邹欣老师在他的书中做了很好的阐释。
首先,我们需要了解什么是团队?
团队有一致的集体目标,团队要一起完成这目标。一个团队的成员不一定要同时工作,例如接力赛跑。团队成员有明确的分工,互相依赖合作,共同完成任务。
既然是团队统一作战,必不可少的要有好的代码规范和设计规范:
代码风格规范:
1缩进:四个空格,不用tab键。
2.行宽:可以限定为100字符。
3.括号:在复杂的条件表达式中,用括号来清楚的表现优先级。
4.断行与空白的{ }行:每个“{”和“}”独占一行。
5.分行:不要把多条语句放在一行上,也不要把多个定义变量放在一行上。
6.命名:在变量名前加上有意义的前缀,能看出变量的类型及相应语句的含义。
7.下划线:分隔变量名字中作用域和变量的语义。
8.大小写:所有的类型/类/函数名都用Pascal形式,所有的变量都用Camel形式(如Member)。函数用动词和动宾短语来表示(如 RenderPage())。
9.注释:复杂的注释放在函数头。
代码设计规范:
1.函数:现代程序设计语言中绝大部分功能,都在程序的函数中实现。关于函数有一个重要的原则是:只做一件事,并且要做好。
2.goto:函数最好有单一的出口,为了达到这一目的,可以使用goto。
3.错误处理:
1)参数处理:通过外部输入参数进行验证正确性。
2)断言:你觉得某事肯定时可以用断言,这时要写代码来处理可能发生的错误情况。
4.如何处理好c++中的类
(1)类:
1)使用类来封装面向对象的概念和多态。
2)避免传递实体的值,应该用指针传递。
3)对于有显示的构造和析构函数的类,不要建立全局的实体。
4)仅在必要时,才使用类。
(2)Class vs .struct
如果只是数据的封装,用struct即可。
(3)公共/保护/私有成员
按照这样的次序来说明类中的成员:public、protected、private。
(4)数据成员
1)数据类型用n_name说明。
2)不要使用公共的数据成员,要用niline来访问。
(5)虚函数
1)使用虚函数来实现多态。
2)仅在很有必要时,才使用虚函数。
3)如果一个类型需要实现多态,在基类中的析构函数应该是虚函数。
(6)构造函数
1)不要在构造函数中做复杂的操作,简单初始化所有数据成员即可。
2)构造函数不应该返回错误(事实上也无法返回)。把可能出错的操作放到HrInit()或FInit()中。
(7)析构函数
1)把所有的清理工作都放到析构函数中。如果有些资源在虚构函数之前就释放了,记住要重置这些成员为0或NULL。
2)析构函数也不应该出错
(8)New和delete
1)如果可能,实现自己的new和delete。这样可以方便的加上自己的跟踪和管理机制。自己的new和delete可以包装系统提供的new和delete
2)检查new的返回值,new不一定都成功。
3)释放指针时不用检查NULL。
(9)运算符
1)在理想状态下,我们定义的类不需要自定义操作符,却有必要时,才会自定义操作符。
2)运算符不要做标准语义之外的任何动作。
3)运算符的实现必须非常有效率,如果有复杂的操作,应定义一个单独的函数。
4)当你拿不定主意的时候,用成员函数,别用运算符。
(10)异常
1)异常是在“异乎寻常”的情况下出现的。它的设置和处理都要花费“异乎寻常”的开始,所以不要用异常作为逻辑控制来处理程序的主要流程。
2)了解异常及处理异常的花销,在C++语言中,这是不可忽视的开销。
3)当使用异常时,要注意在什么地方清理数据。
4)异常不能跨过DLL或进程的边界来传递信息,所以异常不是万能的。
(11)类型继承
1)仅在必要时,才使用类型继承。
2)用const标注只读的参数(参数指向的数据是只读的,而不是参数的本身)。
3)用const标注不改变数据的函数。
那么,怎样促进两人之间的合作呢:
1.相互影响:
影响他人有下面这几种方式:
(1)断言:就是这样吧,听我的,没错!
(2)桥梁:能不能给我讲讲你的理由... ...
(3)说服:如果我们这样做,根据我的分析,我们会有这样的好处a,b,c ... ...
(4)吸引:你想过的舒适吗?你想在家里发大财吗?加入我们吧,几个月后就有上万的收入... ...
2.正确的给予反馈:
如何给予让人易于接受的反馈呢?这有一个“三明治”的方法:
(1)先来一片面包:强调双方的共同点,从团队共同的愿景讲起,让对方觉得处于一个安全的环境。
(2)再把肉放上:展望将来的结果,强调过去你做得不够,但是我们以后可以做的更好。在技术团队里,我们的反馈要着重于行为和后果这一方面,不要贸然深入到习惯和动机或者本质上,除非情况非常严峻,需要触动别人的内心深处,让别人悬崖勒马。
(3)再来一片面包片,呼应开头,鼓励对方把工作做好。
这一章节。让我们懂得了如何规范自己,写出合格的代码,并且让我们了解软件开发的流程,以便于更好的找到自己的角色,促进团队的合作,为将来的合作做出了指导,指明了道路。