每个函数指完成单一的功能。单一功能的函数容易理解,容易测试,也容易预测其行为。给已输入,就能知道其输出。
在设计的时候,将函数分为:查询和命令。
- 查询函数:仅仅查询对象的状态,而不改变对象的状态。比如dist_length.指返回双向链表的长度。
- 命令函数:只修改对象的状态,而不返回对象的状态。比如:dist_delete只删除链表的结点,并返回其操作是否成功,而不返回当前的长度或者结点是否存在。
查询分为:基本查询和复合查询。
- 基本查询:只查对象的单一状态。
- 复合查询:可以查询对象的多个状态。
比如:window_get_width()或者窗口的宽度,window_get_rect()获得窗口的左上角,宽度和高度。
在实现的时候,检验输入数据,确认使用者正确的调用了函数。契约式设计,规定了调用者和实现者,双方的责任。
检查你的函数
- 关注语法错误,代码排版和变量命名。
- 关注常见的编译错误,比如内存泄露,和可能的越界访问。变量没有初始化,函数没有返回值,没有判断函数返回值。
- 模拟计算机执行。看执行结束是否和预期一样。
- 自己先给自己讲一遍程序的实现流程。看流程是否自己能理解。
需要检查那些错误
- 内存泄露
- 内存访问越界
- 野指针
- 访问空指针
- 引用未初始化的变量
- 不清楚指针运算
- 初始化结构引发的错误
- 结构大小引起的变化
- 分配和释放不匹配
- 返回指向临时变量的指针
- 试图修改常量全局变量和字符串
- 误解传值和引用
- 符号重名
- 栈溢出
- 误用sizeof
- 字节对齐
- 字节顺序
- 多线程共享变量没有用volitile修饰
- 忘记函数的返回值
本文地址:http://www.nowamagic.net/librarys/veda/detail/486,欢迎访问原出处。