代码规范

一个人独立完成的软件已经很少见了(向独立游戏开发者致敬),软件都是在相互合作中完成的,最小单位: 俩人。

代码规范: 不同的人对代码好坏评判不同,需要基准

代码风格规范

  • 文字上的规定,很重要

  • 原则: 简明易读,无二义性

  • 命名上应该一眼看出变量的类型和语义

    匈牙利命名法: 给变量以有意义的前缀。对于强类型的语言不必要

    Pascal: 所有单词首字母大写

    Camel: 第一个单词小写,其余单词遵循Pascal

    函数: 动词或者动宾来组合

  • 注释

    复杂的注释应该放在函数头

    注释应该只用ASCII码

    误导的注释比没有注释更糟糕

    避免冗余的注释

代码设计规范

  • 通用原则上的规范,牵涉模块关系等

  • 函数

    只做一件事,并且做好

  • goto

    函数最好有单一的出口,为达此目的,可以使用goto

    ??以前都是听说要避免使用goto

  • 错误处理

    验证参数正确性

    使用Assert

  • 如何处理C++中的类

    • 类的使用

      使用类来封装面向对象的概念和多态

      指针传递,避免传递实体的值

      对于有显式构造和析构函数的类,避免建立全局的实体,因为不知道何时创建和消除

      仅在必要时使用类

      仅数据的封装,用struct即可

      仅在必要时使用类型继承

    • 关于数据成员和方法

      按照public, protected, private 的顺序来说明类中的成员

      使用虚函数来实现多态;仅在很有必要时使用虚函数;若一个类型要实现多态,在基类中的析构函数应该是虚函数(对于原因理解不是很清楚,是为了防止忘了在子类中写析构函数吗,对于c++不是很熟)

      数据成员 m_name; 不要使用公共的数据成员; 用inline访问函数,兼顾封装和效率

    • new和delete

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

      释放指针时不用检查NULL

    • 运算符

      不做标准语义之外的事情

      确实有必要时再定义

      需要高效

代码复审

  • 代码是否在“代码规范”的框架里正确的解决了问题
  • 自我复审、同伴复审、团队复审
  • 目的
    • 找代码错误: 编码错误,不符合规范之处,逻辑和算法的错误,潜在的错误和回归星错误
    • 熟悉项目代码的途径
  • 复审后
    • 更正明显的错误
    • 记录无法快速更正的错误
    • 记录自己常犯的错误,促进自我复审
  • 代码复审的核查表(记下需要这个东西)

结对编程

Driver & Navigator

感觉有利于避免低级错误

这部分心理学,沟通技巧等

团队合作的重要性

笔记整理

  • inline

    C++ 中,可以在定义函数时,在返回值类型前面加上 inline 关键字, 增加了 inline 关键字的函数称为“内联函数”。

    • 内联函数和普通函数的区别:当编译器处理调用内联函数的语句时,不会将该语句编译成函数调用的指令,而是直接将整个函数体的代码插人调用语句处,就像整个函数体在调用处被重写了一遍一样。
    • 不需要付出执行函数调用的额外开销
    • 内联函数中的代码应该只是很简单、执行很快的几条语句。否则失去意义了
    • 调用内联函数的语句前必须已经出现内联函数的定义(即整个数体),而不能只出现内联函数的声明。
inline int Max (int a, int b)
{
    if(a >b)
        return a;
    return b;
}
  • 异常
    • 异常不能跨过DLL或进程的边界来传递信息,不太明白含义,还需要再了解
    • 异常处理机制及异常的花销
    • 不要用异常来作为逻辑控制来处理程序中的主要流程
    • 使用异常时注意在什么地方清理数据
posted on 2019-08-31 21:06  浅塘  阅读(187)  评论(1编辑  收藏  举报