构建之法阅读笔记03

对于现代的软件产业,靠一个人单枪匹马已经很少见了,软件都是在相互合作中完成的,如何促进团队之间的合作?邹欣老师在他的书中做了很好的阐释。

 

首先,我们需要了解什么是团队?

     团队有一致的集体目标,团队要一起完成这目标。一个团队的成员不一定要同时工作,例如接力赛跑。团队成员有明确的分工,互相依赖合作,共同完成任务。

 

既然是团队统一作战,必不可少的要有好的代码规范和设计规范:

代码风格规范:

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)公共/保护/私有成员

     按照这样的次序来说明类中的成员:publicprotectedprivate

(4)数据成员

     1)数据类型用n_name说明。

     2)不要使用公共的数据成员,要用niline来访问。

(5)虚函数

     1)使用虚函数来实现多态。

     2)仅在很有必要时,才使用虚函数。

     3)如果一个类型需要实现多态,在基类中的析构函数应该是虚函数。

(6)构造函数

     1)不要在构造函数中做复杂的操作,简单初始化所有数据成员即可。

     2)构造函数不应该返回错误(事实上也无法返回)。把可能出错的操作放到HrInit()FInit()中。

(7)析构函数

     1)把所有的清理工作都放到析构函数中。如果有些资源在虚构函数之前就释放了,记住要重置这些成员为0NULL

     2)析构函数也不应该出错

(8)Newdelete

     1)如果可能,实现自己的newdelete。这样可以方便的加上自己的跟踪和管理机制。自己的newdelete可以包装系统提供的newdelete

     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)再来一片面包片,呼应开头,鼓励对方把工作做好。

 

    这一章节。让我们懂得了如何规范自己,写出合格的代码,并且让我们了解软件开发的流程,以便于更好的找到自己的角色,促进团队的合作,为将来的合作做出了指导,指明了道路。

posted @ 2017-02-15 12:36  随风的叶子  阅读(108)  评论(0编辑  收藏  举报