摘要:我想看看我是否可以重構具有規律,以使其更易於更新和維護一些C++代碼。重構規則的C++代碼模式
詳細:
我有一個創建線程本地計數器來跟蹤統計的程序執行過程中的一些代碼。目前,當統計信息添加到源代碼中時,需要更新5件事情:計數器線程本地聲明,計數器總計聲明,重置線程計數器的函數,將線程計數器添加到總數的函數,和打印功能。
的代碼是類似以下內容:
// Adding a statistic named 'counter'
// Declaration of counter
__thread int counter = 0;
int total_counter = 0;
// In reset function
counter = 0;
// In add function
total_counter += counter;
// In print function
printf("counter value is: %d\n", total_counter);
我可以看到一個宏可以在櫃檯做類似的聲明創建:
#define STAT(name) __thread int name; \
int total_##name;
但我沒有想到如何將其擴展到更新add
和reset
功能。理想情況下,我想輸入諸如STAT(counter)
之類的東西,並具有用於管理統計信息的所有聲明和功能。
編輯:
我已經在代碼更新的統計數據宏。這樣的東西,如STAT_INC(counter)
會增加本地計數器值。然後當線程完成執行時,線程本地值將被添加到整體總數中。所以每個統計的名字都很重要,這就是爲什麼一個數組不適合我的原因。因爲真正的計數器名稱是cache_hit
,比counter[2]
更有意義,我不想失去爲創建的統計信息指定任意名稱的能力。只是爲了簡化我在聲明統計信息時必須編寫的代碼量。
使用數組(或向量,管他呢)。 – 2013-05-09 18:55:26