(学习日记)数据结构第一章中life游戏开发的学习记录
- 使用占位函数
在编写项目时,在用到的每个函数的位置上放上简短的哑函数,又称占位函数。这样做,至少能编译程序并确信类型和变量的定义在语法上是正确的。
- 有些老的编译器不支持bool类型。我们可以用下面语句模拟:
typedef int bool;
const bool false= 0;
const bool true=1;
- 栅栏(hedge)或监视哨(sentinel)
监视哨是放入数据结构中的额外的元素,因而不用再将边界条件作为一种特殊情况对待。
- 程序设计技术规则
将输入和输出作为独立的函数,使得它们易于修改并能定制修改以适应计算系统。
- 多个.h头文件时注意#include(c++ primer 第四版 p60预处理器的简单介绍)
注意使用 头文件保护符(header guard): 在设计头文件时,应使其可以多次包含在同一源文件中,我们必须保证多次包含同一头文件不会引起该头文件定义的类和对象被多次定义。
注意:(c++ primer 第四版 p69 命名空间的using声明)有一种情况下必须总是使用完全限定的标准库名字(std:: 前缀):在头文件中。应为头文件的内容会被预处理器复制到程序中。用#include包含文件时,相当于头文件中的文本将成为我们编写的文件的一部分。如果在头文件中放置using声明,就相当于在包含该头文件的每个程序中都放置了同一using声明,不论该程序是否需要using声明。
(更多关于#include的,参考msdn中#include指令(c/c++)。)
- 驱动程序:
调试和测试单个函数的一种方法是写一个较短的辅助程序来为此函数提供必要的输入、调用此函数并评价函数执行的结果,这样的辅助函数称为函数的驱动器。
- 测试:
对打的项目来说,在编写每个小模块时就对它应用玻璃盒方法进行测试,而当程序完成时就使用黑盒测试数据来探测较大的部分。
- 发现了life.cpp中有个bug。对于字母输入,会出错。
使用<typeinfo>
中的 typeid(对象).name();返回类型 貌似可以做出来。但是我失败了,bug还是在那里~