天天看點

代碼容錯性及設計的一些小技巧(持續更新)

do-while的使用

#ifndef _BEGIN_DO_WHILE_
#define _BEGIN_DO_WHILE_  do{
#define _END_DO_WHILE_   }while(false);
#endif

具體代碼中的使用
_BEGIN_DO_WHILE_

xxx
if 出錯
    break;
xxx

_END_DO_WHILE_

xxx
這樣即使程式出錯 也可以保證 _END_DO_WHILE_之後的代碼得到執行
           

變量字首的使用

class Test
{
private:
    string strProductId;
    int iProductNum;
    int iCoinType;
    int iCoinNum;
    int iErrorCode;
    int strBillno;
};

變量字首用來辨別變量類型,可以在後續編碼過程中快速識别變量類型,不用再跳轉去檢視.
           

轉換嵌套設計為線性設計

需求: 記錄qq使用者 微信使用者 遊客使用者的流水記錄 使用reids存儲,并提供查詢.

我的設計: 使用set結構

key value
qq <賬号,<時間戳,flowItem>>
wx <賬号,<時間戳,flowItem>>
guest <賬号,<時間戳,flowItem>>

師父的設計: 使用sorted set結構

key score value
qq_賬号 時間戳 flowItem
wx_賬号 時間戳 flowItem
guest_賬号 時間戳 flowItem

namespace以及Google protocol buffer的使用

namespace的使用可以有效的防止命名污染的問題,避免和原有的代碼發生沖突.

在具體的項目中,可以使用Google protocol buffer.(或者公司的jce協定)

參考:

  • https://developers.google.com/protocol-buffers/docs/overview
  • https://www.ibm.com/developerworks/cn/linux/l-cn-gpb/

該協定最大的特點是相容性特别強,使得後續的業務拓展非常便利.并且使用者隻需要定義資料結構即可,代碼可以由解析器自動生成.

擷取配置的懶惰型原則

  • 能一次初始化的配置,一次初始化完成,不要每次調用反複初始化,浪費資源.
  • 在讀取配置類的資訊的時候,比如中共享記憶體中擷取相關資料,一次讀取的結果可以緩存起來,第二次讀取的時候,先從緩存中擷取資料,如果緩存中沒有資料,則再去共享記憶體中讀取資料,然後繼續緩存.

一些代碼編寫規範

  • 子產品中的函數一定要對一些邊界條件和參數的合法性進行判斷,即使是自己調用自己的函數,這樣可以有效降低後人調用該函數出錯的機率.
  • 代碼中盡量不要出現寫死,多使用宏和const常量,必要時使用static進行作用域的限制.
  • 養成順手寫注釋的習慣,利己利人.
  • 能獨立出來的函數或代碼子產品一定要獨立出來,降低代碼的耦合性以及降低相同代碼出現的可能性.
  • 開發環境能使用公共庫盡量使用公共庫,相同的頭檔案保證在整個項目中隻有一份,防止多份拷貝造成頭檔案的不一緻性.
  • 監控很重要,可以及時了解服務的狀态

繼續閱讀