• 《构建之法》学习(4)——两人合作


    《构建之法》学习(4)——两人合作

     

    1.代码规范

     

          做一个有商业价值的项目,或者在团队里工作,代码规范相当重要。

          代码规范不仅能让同时期编程的合作同伴易理解,而且在后期他人作代码扩充时能节约时间,更好地完成项目。

    1.1代码风格规范:简明,易读,无二义性

          缩进:4个空格

          行宽:100字符

          括号:表示逻辑优先级

          断行与空白的{}行:每个“{”和”}“都独占一行

          分行:不把多条语句放在一行上

          命名:“匈牙利命名法”

          下划线:分隔变量名字中的作用域标注和变量的语义

          大小写:所有的类型/类/函数名都用Pascal形式,所有的变量都有Camel形式

          注释:解释程序做什么,为什么这样做,以及特别要注意的地方

            

    1.2代码设计规范

          函数:只做一件事,并且要做好

          goto:函数最好有单一的出口,为了达到这个目的,可以使用goto

          错误处理:参数处理

           断言

          如何处理C++中的类:类:避免传递类型实体的值,应该用指针传递。

                    对于有显式的构造和析构函数的类,不要建立全局的实体,因为你不知道它们在何时创建和消

                    除。

                公共/保护/私有:按照这样的次序来说明类中的成员:public、protected、private。

                数据成员:数据类型的成员用m_name说明。

                     不要使用公共数据成员,要用inline访问啊还念书,这样可以兼顾封装和效率。

                虚函数:仅在很有必要的时候,才使用虚函数。

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

                析构函数:把所有的清理工作都放在析构函数中。如果有些资源在析构函数之前就释放了,记住要

                     重置这些成员为0或NULL。

                new和delete:如果可能,实现自己的new/delete,这样可以方便地加上自己的跟踪和管理机

                        制。自己 的new/delete可以包装系统提供的new/delete。

                        检查new的返回值。new不一定都成功。

                        释放指针时不用检查NULL。

                运算符:当拿不定主意的时候,不要用运算符,用成员函数。

                异常:使用异常时,需要注意在什么地方清理数据。

                       异常不能跨过DLL或进程的边界来传递信息,所以异常不是万能的。

                类型继承:用const标注只读的参数(参数指向的数据是只读的,而不是参数本身)。

                   用const标注不改变数据的函数。

    2.代码复审

          看代码是否在“代码规范”的框架内正确地解决了问题。

          目的

          找出代码的错误

          发现逻辑错误

          发现算法错误

          发现潜在的错误和回归性错误

          发现可能需要改进的地方

          教育开发人员,传授经验,让更多的成员熟悉项目各部分的代码,同时熟悉和应用领域相关的实际知识

      代码复审的步骤

      复审前

      代码必须成功地编译,在所有要求的平台上,同时要编译Debug、Retail版本

      程序员必须测试过代码

      程序员必须提供新的代码,以及文件差异分析工具

      简单来说,就是程序员要先做好一切准备

      复审者有权在任何时候打断叙述,提出自己的意见

      复审时

      要把眼光放远,问一些更深层的问题:这样修改会影响其他功能吗?根本原因是什么?如何避免再次出现?

      复审后

      加入特定标记//$todo, $review, $bug

          代码复审的核查表

          概要部分

          设计规范部分

          代码规范部分

          具体代码部分

          效能

          可读性

          可测试性

    3.结对编程

          在结对编程中,因为有随时的复审和交流,程序各方面的质量取决于一对程序员中各方面水平较高的那一位。这样,程序中的错误就会少得多,程序的初始质量会高很多,这样会省下很多以后修改、测试的时间。

          同时,结对的两人可以互相督促,频繁交流,也可以避免代码的责任只属于某一个人,建立集体拥有代码的意识。

     

    4.两人合作的不同阶段和技巧

          萌芽阶段

          磨合阶段

          规范阶段

          创造阶段

          解体阶段

      如何正确地给予反馈

      最外层:行为和后果

      中间层:习惯和动机

      最内层:本质和固有属性

  • 相关阅读:
    Leetcode 乘积最大子数组 (两种思路)
    C++string函数库-->to_string
    Zigzags CodeForces
    石子游戏(Leetcode每日一题)
    树形dp入门题(Leetcode 337. 打家劫舍 III)
    E
    背包九讲
    通过树状dp来求树的直径
    329. 矩阵中的最长递增路径(Leetcode每日一题)
    关于图的匹配,边覆盖,独立集,顶点覆盖
  • 原文地址:https://www.cnblogs.com/Yan1970/p/6810234.html
Copyright © 2020-2023  润新知