最近写了一个连接池和MySQL C API的封装库,解决编译问题花了一两个小时,都是由一些不良编码习惯导致,总结一下
1. 文件拷贝导致的问题
- 拷贝后类名没有改完整。通常用sed替换类名会有这个问题:一行出现两个匹配时只会替换第一个,这对于构造和析构函数的实现总有问题。
- 头文件没有改
- 头注释里面的文件名没有改
解决方法:不要拷贝文件!重敲一次不会死人。
2. 头文件问题
- 用到了类,但没有include对应头文件。
解决方法:对于.h,对于引用和指针,尽量使用前置声明;同时应该把.cpp里面的头文件include进去。这两个过程同时做可以事半功倍。
3. 命名空间问题
- 开始命名空间没有规划好,编码过程中修改空间很混乱
- 没有写using namespace
解决方法:提前规划好命名空间,尽量不要修改;using要变成习惯,编码时停下来,想一想,再动手。
4. 数据类型不匹配
- 打印、赋值的时候类型不匹配
解决办法:尽量注意,但也可以适当留到让编译器发现。
5. 未使用的参数
- 对于暂不实现的方法,没填充空白
解决办法:习惯问题。空函数立即UNUSED(param), return OB_NOT_IMPLEMENT;
6. 变量未声明
- 主要是ret,i
解决办法:写循环的时候先去把变量声明好再开始写,不费时;ret要成习惯。
7. 类实现未写类名
- int get() {} 应该写成 int MyClass::get() {}
解决办法:习惯问题
总之,写码的时候慢点写,不要急。慢就是快。