Windows 程式調試___編寫便於調試的C++代碼(Chapter 2)

來源:互聯網
上載者:User

      今天讀了<<Windows 程式調試>>編寫便於調試的C++代碼這一章內容,覺得收穫較大,對本人在編程風格和編程習慣上有指導意義.筆記如下:

 

一.設計:

     重要的特性是簡單性耦合性, 大多數常見的設計錯誤來源於程式設計不必要的複雜成分,因此盡量使程式簡單合理.耦合性用來衡量不同對象之間的依賴程度,因此程式中能獨立的對象要盡量獨立出來.

 

二.C++編程風格

1.清晰地書寫代碼,最直接的說出你的意思;

2.結構良好的代碼具有更加有用的調用棧(call stack),它能給你更多的資訊;

3.使用良好的標識名字;

4.重新考慮匈牙利命名法,儘管這種命名法過去很有用,隨著時代改變,匈牙利命名法書寫的程式難以閱讀,難以維護,容易被人誤解;(疑問:現在大部分程式員都還是用這種命名法,有沒有更好更合理的方法呢?書中也沒有介紹,可能關鍵還是個人習慣問題吧)

5.用簡單的語句行;

6.使用統一的排列,用空格鍵代替tab鍵;

7.用括弧使書寫更清晰,如果你不能確定是否需要用括弧,你就需要用括弧.這樣可使優先順序的問題一目瞭然;

8.為了將來的維護,書寫注釋.

 

三.C++語言

1.選擇C++語言而不是C預先處理,但是要理解調試代碼的時候需要使用前置處理器;

2.要在標頭檔中聲明所有共用的外部符號,而且保留函數原型中的參數名;

3.記得在建構函式裡面初始化資料成員,

4.對於不熟悉的位元遮罩要檢查位元遮罩值,必要的時候,使用掩碼宏或者子域掩碼;

5.布林運算式應當檢查是否為假而不是檢查是否為真;

     如:if(boolleanValue == TRUE)....;是不合理的,應當改寫為if (boolleanValue != FALSE)....;或if (boolleanValue )....;

6.應當防止使用整型,字元型和浮點變數出現減一錯誤,除零,溢出錯誤.

7.在使用指標和控制代碼時,當回收指標所指的對象的時候要重新初始化這個指標,並且要在指標被釋放之前為空白時就對其進行處理;

8.不要匆忙使用強制類型轉換,因強制類型轉換會在維護時引發問題,如果你在Visual C++中使用dynamic_cast,記住要在Project設定裡面選擇Enable Run_time Type Information選項;

9.在程式中仔細地使用const是一種好方法,能協助編譯器在編譯時間發現錯誤,但引入const時如果不是一開始就用的話,添加起來就會很麻煩.使用const 是一個不動則已,一動就動全身的問題;

10.如果迴圈變數的增加操作在每次迴圈的時候都必須執行的話,那麼就使用for語句而不是while語句;

 

四.Visual C++編譯器

1.盡量採用編譯時間刻檢查而不是運行時刻檢查,使用W4警告層級是個好辦法;

2.在調試版本裡總是使用GZ編譯選項;

3."沒有警告的編譯"法則對於大的程式開發小組來說很有協助,但是前提是允許出現異常,最終目標是消除錯誤,而不是消除警告.

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.