對自己的要求:
- 瞭解OceanBase的編碼風格(代碼規範,異常機制等)
- 瞭解OceanBase測試如何組織,如何啟動並執行
- 瞭解OceanBase裡都用了哪些設計模式,在什麼情境下應用,解決了什麼問題
- 可以暫不對其實現原理,進行探究
- 初步只採用靜態分析的方式進行學習
命名規範:
- 目錄:小寫
- 檔案:小寫+底線
- 類名:駝峰(大駝峰)
- 常量:大寫+底線
- 變數:小寫+底線
- 方法名:小寫+底線
- namespace:小寫
我覺得為什麼採用了這麼多不同的命名風格是不是想使代碼從長的樣子差異就特別大,肉眼掃過去憑著直覺就知道是什麼呢?
縮排:
居然是兩個空格,絕對不能忍的,不知道是不是因為OB自己的編碼風格會造成一行字元太多就縮短了空格數呢?,但是個人覺得這樣會操作邏輯層次不清楚,自從寫了python以後我就是4空格支援者了(輸入還是1tab,配置成4空格長)不過進入一個團隊就沒辦法了,對於團隊來說一致編碼的風格才是重要的,貌似對於一個團隊來說,最高的標準就是所有代碼就像同一個人寫的:)
大刮號:
採用獨佔1行,上下對齊,我現在也是這樣的:),如果只有1行代碼還要不要刮號呢?google的編碼規範裡認為也是必須的,我現在也是這麼看的,因為一旦想加幾行代碼,說不定就把刮號這事給忘了,那麼就會造成個bug
注釋:
- 每個檔案頂部放著作權資訊,編寫人,維護人資訊
- .H檔案裡描述類和類的方法的功能定義,輸入輸出,然後在.CPP檔案裡就不再描述
- 含義明確的函數就不用再進行描述(例如沒有代碼的建構函式,解構函式)
- 其他視感覺而定
注釋例子:
/** * get the start key of next block * * @param block_cache block cache * @param table_id table id of the sstable which the block * belongs to * @param column_group_id column group id of the sstable which * the block belongs to * @param start_key start key of next block * @param reader the sstable reader which the rowkey belong to * * @return int if success,return OB_SUCCESS or OB_ITER_END, else * return OB_ERROR */ int get_start_key_of_next_block(sstable::ObBlockCache& block_cache, uint64_t& table_id, uint64_t& column_group_id, common::ObString& start_key, sstable::ObSSTableReader* sstable_reader = NULL);