zoukankan      html  css  js  c++  java
  • 构建之法阅读笔记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)再来一片面包片,呼应开头,鼓励对方把工作做好。

     

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

  • 相关阅读:
    第一节,Django+Xadmin打造上线标准的在线教育平台—创建用户app,在models.py文件生成3张表,用户表、验证码表、轮播图表
    Tensorflow 错误:Unknown command line flag 'f'
    Python 多线程总结
    Git 强制拉取覆盖本地所有文件
    Hive常用函数 傻瓜学习笔记 附完整示例
    Linux 删除指定大小(范围)的文件
    Python 操作 HBase —— Trift Trift2 Happybase 安装使用
    梯度消失 梯度爆炸 梯度偏置 梯度饱和 梯度死亡 文献收藏
    Embedding 文献收藏
    深度学习在CTR预估中的应用 文献收藏
  • 原文地址:https://www.cnblogs.com/suifengye/p/6400916.html
Copyright © 2011-2022 走看看