代码大全_第二部分: 创建高质量的代码

来源:互联网 发布:微信订水软件 编辑:程序博客网 时间:2024/04/30 03:24

第6章: 可以工作的类

包含与继承:
  • 继承的语义是"是一个", 而包含的语义是"有一个"
  • 相比之下继承的复杂度更高, 如果你难以判断用包含还是继承, 就用包含
  • 只使用最基本的继承关系, 尽量避免深层嵌套的继承和多重继承
一些小的点:
  • 使用类的最大作用之一是将信息隐藏
  • 尽量让类和成员函数与存储数据的方式无关
  • 要让类的结构在同一个层次上
  • 封装一般是指通过一些语法手段, 强制阻止你看到细节, 有助于保护抽象不会破坏

第7章: 高质量的子程避免

原则性问题:

  • 子程序的设计要考虑内聚性: 保证每个子程序只做一件事

一些小的点:

  • 好的函数名字:
    • 包含所有事情
    • 对返回值有所描述
    • 长度不最多在20个字符左右
    • 在整个项目中规则一致
  • 即使某个操作很短, 如果它适合写成函数(比如出现了很多次, 有明确的逻辑含义), 那么也是有必要的.
  • 函数很长不重要, 但要保证逻辑上只做了一件事情. 复杂的算法或业务逻辑确实会导致很长的函数, 这无法避免. 但通常超过200行的函数会严重影响可读性.
  • 参数很多时, 将输入和输出函数分别放在一起
  • 如果使用宏, 要注意用小括号保证运算顺序, 用大括号包含多个子句
  • 尽量不用宏, 而是用inline, const, typedef等代替

第8章: 防御式编程

原则性问题:

  • 防御式编程包括错误处理, 异常, 断言等. 它有众多优点, 但也会使程序变得复杂, 缓慢, 应该适当地使用.
  • 要区分产品级软件(release版本)和开发级软件(debug版本), 有区别地使用防御式编程

一些小的点:

  • 用断言处理绝不应该发生的状况, 用错误代码处理预期会发生的状况
  • 只有在真正例外的情况下才抛出异常
  • 避免在构造函数和析构函数中使用异常
  • 建立隔离层, 集中地处理错误, 以减少程序的复杂度

第9章: 伪代码编程过程

一些小的点:

  • 避免使用特定语言的语法元素: 伪代码的层次要高于代码
  • 描述解决问题的方法, 而不是如何实现
  • 伪代码应该能很容易转化成代码, 否则说明它不够详细, 掩盖了一些问题

0 0
原创粉丝点击