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

     

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

  • 相关阅读:
    利用python进行数据分析之数据聚合和分组运算
    利用python进行数据分析之绘图和可视化
    利用python进行数据分析之数据规整化
    利用python进行数据分析之pandas库的应用(二)
    利用python进行数据分析之pandas库的应用(一)
    利用python进行数据分析之数据加载存储与文件格式
    git 本地无版本仓库推送到远程新仓库命令
    Docker 部署Dotnet Core MVC项目
    css 单行图片文字水平垂直居中汇总
    IL命令初学者要知道的事
  • 原文地址:https://www.cnblogs.com/suifengye/p/6400916.html
Copyright © 2020-2023  润新知