第一篇-正確書寫代碼
1. 簡介
2. 書寫干淨的代碼
3. 使用異常及異常處理能力
4. 使用記錄(logging)機制
5. 結合使用記錄機制與類的異常處理機制
6. 處理您代碼外產生的異常
7. 你的回合
8. 版權說明
簡介
這篇文章,我將從最基本的開始談起。但希望可以涉及更廣的層面,而不僅僅是為你的程序除錯(debug)。你將會看到,我認為除錯(debugging)這個字的全部意義,並不只是通過ide的內建機制來運行的。我希望在這篇小小的文章結束時,幾乎每個讀者都可以學到至少是一件新東西,並把它藏到你的兵器庫中。記住,你程序中的錯誤(bug)越少,你的最終用戶對你的程序的感覺就越好;你對錯誤(bug)的處理越好,用戶們發現錯誤(bug)時就越樂於告訴你以便你改正錯誤。好了,現在系好安全帶,戴上護目鏡,讓我們開始一段瘋狂的路程!
書寫干淨的代碼
首先而且也許是最重要的一點是書寫干淨、可讀的代碼是極其重要的。能夠在寫完一段代碼後回顧一下並給它加上注釋來說明這段代碼用來做什麼和為什麼這麼做,將會省去你以後跟蹤代碼的無數個痛苦的小時。也許你會多花一點時間來書寫,但當你花過n小時來跟蹤那些難以捉摸的bug時,你就會同意多花點時間來讓程序代碼可讀是多麼值得了。(你本可以很容易完成除錯的)。如果沒有這麼做過,我建議你停下來,讀讀另一篇scott的精彩文章-代碼的風格(大家需要的話,將會盡快翻譯)。
使用異常及異常處理能力
現在進入下一步,這仍然是基於代碼的步驟。(除了在極少數的情況下,你不能老是使用系統內建的除錯器,所以知道其他可以找出這些麻煩的蟲子的辦法總是個好主意)。本步驟完全是關於如何做到,更重要的是處理好在你的窗體出現異常時系統扔給你的(產生的)錯誤。在c++標准得到認可前黑暗的舊日子裡,應用程序通常會通過返回值來發出錯誤信號(這種方法在ole和一些winapi函數中仍在使用)。很顯然,你可以很輕易的忽略這些(事實上也是經常的,我的意思是你經常檢查一個winapi函數的返回值嗎?)。
所以他們決定….,okay,我們需要一個新的機制,一個你不能忽略的。但你可以處理,定制(自定義 customize)。異常就此出現了。想要一個特殊的錯誤類型標志?容易的很,定義一個新的異常類型(不過是一個類,沒別的),拋出來(產生這個異常)。完了。
例子:
class myexception
{
public:
ansistring imessage;
myexception(ansistring message) { imessage=message;}
};
throw new myexception(“test exception message”);
就這麼簡單!(當然不是很完全,我會很快加上的)。漂亮而又簡單,並且非常容易定制來滿足您的需要。okey,你會問到:“我能產生異常了,但如何處理它們?我的意思是,我想在第一時間(位置)從我的代碼中排除異常!”這當然很容易做到,實際上還很容易定制呢!標准委員會為我們定義了try {/* code *