learn c++ from levelDB
LevelDB是一个学习c++很好的一个代码. 里面有很多写代码的好习惯值得我们学习.
- assert 断言, 在一些判断的地方直接用 assert 来提示出错 比如
char operator const { assert(n < size()); return data_[n]; } - 尽量如果一个成员函数的方法不会改变成员变量的话, 添加上const 结尾
- 如果想让一个类不被复制,那么就设置它的copy construct 和 copy assign 为 私有函数,
并且你要实现的类继承它就可以了, leveldb 里面的WritableFile 就是这么设置的 标注的定义一个类的基类的方法:
class WritableFile {
public:
WritableFile() { }
virtual ~WritableFile();
virtual Status Append(const Slice& data) = 0;
virtual Status Close() = 0;
virtual Status Flush() = 0;
virtual Status Sync() = 0;
private:
// No copying allowed
WritableFile(const WritableFile&);
void operator=(const WritableFile&);
};
- 在设计中多用迭代器模型, 可以抽象更多的细节.
- 未完待续…