代码大全_第二部分: 创建高质量的代码
2016-04-04 16:50
260 查看
第6章: 可以工作的类
包含与继承:
继承的语义是"是一个", 而包含的语义是"有一个"
相比之下继承的复杂度更高, 如果你难以判断用包含还是继承, 就用包含
只使用最基本的继承关系, 尽量避免深层嵌套的继承和多重继承
一些小的点:
使用类的最大作用之一是将信息隐藏
尽量让类和成员函数与存储数据的方式无关
要让类的结构在同一个层次上
封装一般是指通过一些语法手段, 强制阻止你看到细节, 有助于保护抽象不会破坏
第7章: 高质量的子程避免
原则性问题:
子程序的设计要考虑内聚性: 保证每个子程序只做一件事
一些小的点:
好的函数名字:
包含所有事情
对返回值有所描述
长度不最多在20个字符左右
在整个项目中规则一致
即使某个操作很短, 如果它适合写成函数(比如出现了很多次, 有明确的逻辑含义), 那么也是有必要的.
函数很长不重要, 但要保证逻辑上只做了一件事情. 复杂的算法或业务逻辑确实会导致很长的函数, 这无法避免. 但通常超过200行的函数会严重影响可读性.
参数很多时, 将输入和输出函数分别放在一起
如果使用宏, 要注意用小括号保证运算顺序, 用大括号包含多个子句
尽量不用宏, 而是用inline, const, typedef等代替
第8章: 防御式编程
原则性问题:
防御式编程包括错误处理, 异常, 断言等. 它有众多优点, 但也会使程序变得复杂, 缓慢, 应该适当地使用.
要区分产品级软件(release版本)和开发级软件(debug版本), 有区别地使用防御式编程
一些小的点:
用断言处理绝不应该发生的状况, 用错误代码处理预期会发生的状况
只有在真正例外的情况下才抛出异常
避免在构造函数和析构函数中使用异常
建立隔离层, 集中地处理错误, 以减少程序的复杂度
第9章: 伪代码编程过程
一些小的点:
避免使用特定语言的语法元素: 伪代码的层次要高于代码
描述解决问题的方法, 而不是如何实现
伪代码应该能很容易转化成代码, 否则说明它不够详细, 掩盖了一些问题
包含与继承:
继承的语义是"是一个", 而包含的语义是"有一个"
相比之下继承的复杂度更高, 如果你难以判断用包含还是继承, 就用包含
只使用最基本的继承关系, 尽量避免深层嵌套的继承和多重继承
一些小的点:
使用类的最大作用之一是将信息隐藏
尽量让类和成员函数与存储数据的方式无关
要让类的结构在同一个层次上
封装一般是指通过一些语法手段, 强制阻止你看到细节, 有助于保护抽象不会破坏
第7章: 高质量的子程避免
原则性问题:
子程序的设计要考虑内聚性: 保证每个子程序只做一件事
一些小的点:
好的函数名字:
包含所有事情
对返回值有所描述
长度不最多在20个字符左右
在整个项目中规则一致
即使某个操作很短, 如果它适合写成函数(比如出现了很多次, 有明确的逻辑含义), 那么也是有必要的.
函数很长不重要, 但要保证逻辑上只做了一件事情. 复杂的算法或业务逻辑确实会导致很长的函数, 这无法避免. 但通常超过200行的函数会严重影响可读性.
参数很多时, 将输入和输出函数分别放在一起
如果使用宏, 要注意用小括号保证运算顺序, 用大括号包含多个子句
尽量不用宏, 而是用inline, const, typedef等代替
第8章: 防御式编程
原则性问题:
防御式编程包括错误处理, 异常, 断言等. 它有众多优点, 但也会使程序变得复杂, 缓慢, 应该适当地使用.
要区分产品级软件(release版本)和开发级软件(debug版本), 有区别地使用防御式编程
一些小的点:
用断言处理绝不应该发生的状况, 用错误代码处理预期会发生的状况
只有在真正例外的情况下才抛出异常
避免在构造函数和析构函数中使用异常
建立隔离层, 集中地处理错误, 以减少程序的复杂度
第9章: 伪代码编程过程
一些小的点:
避免使用特定语言的语法元素: 伪代码的层次要高于代码
描述解决问题的方法, 而不是如何实现
伪代码应该能很容易转化成代码, 否则说明它不够详细, 掩盖了一些问题
相关文章推荐
- javabean, ejb, entitybean的区别,以及POJO的概念
- 关于PHP
- C++之多态
- Python 学习之二:Python超短教程
- PHP数据库操作:从MySQL原生API到PDO
- LeetCode 1 - Two Sum ( JAVA )
- java文件读取Scanner
- 【java集合框架源码剖析系列】java源码剖析之java集合中的折半插入排序算法
- 【java集合框架源码剖析系列】java源码剖析之java集合中的折半插入排序算法
- thinkphp控制器笔记
- Eclipse将引用了第三方jar包的Java项目打包成jar文件的两种方法
- 自定义的ArrayList
- CSP考试 2013年12月第4题 C语言实现
- [python]flask框架快速入门
- pure-ftp传输工具安装
- C++继承详解
- java中类与类、类与接口、接口与接口之间的关系
- Java语言基础小结
- 在js中模拟Java中的Map
- win7 64 安装mysql-python