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&);
};
  • 在设计中多用迭代器模型, 可以抽象更多的细节.
  • 未完待续…