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 |
---|---|
<賬号,<時間戳,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進行作用域的限制.
- 養成順手寫注釋的習慣,利己利人.
- 能獨立出來的函數或代碼子產品一定要獨立出來,降低代碼的耦合性以及降低相同代碼出現的可能性.
- 開發環境能使用公共庫盡量使用公共庫,相同的頭檔案保證在整個項目中隻有一份,防止多份拷貝造成頭檔案的不一緻性.
- 監控很重要,可以及時了解服務的狀态