高質量c 程式設計指南摘要(一)(原創)

2021-08-21 22:49:05 字數 2444 閱讀 8607

良好的程式設計習慣

一﹑類:

封裝: 讓模組僅僅分開必須讓外界知道的內容,而隱藏其他一切內容。

繼承:1.若a類和b類毫不相關,不可讓b的功能多些而讓b去繼承a的功能和屬性。

2. 若邏輯上b是a的一種,且a的所有功能和屬性對b都有意義,則允許b

繼承a的功能和屬性。

組合:若邏輯上a是b的一部分,則不允許b從a派生,而要用a和其他東西組合出b。

虛函式:一旦乙個類的乙個函式被宣告為虛函式,則其派生類的對應函式也成為虛函式。建議每一層中顯式的宣告為虛函式。

抽象基類:virtual void draw(void) = 0; 則draw()為純虛函式。含純虛函式為成員函式的類為抽象基類。

動態聯編:用指向派生類物件的基類指標呼叫虛函式,程式會動態地選擇該派生類的虛函式,這種

特性叫動態聯編。

多型性:許多派生類因為繼承了共同的基類而發生關係,每乙個派生類的物件都可以被當成基類的物件來使用,這些派生類物件能對同一函式呼叫作出不同的反映,這就是多型性。多型性是通過虛函式和動態聯編來實現的。

標頭檔案:1.為了防止標頭檔案被重複使用,應當用ifndef/define/endif結構產生預處理塊。

2.用# include格式來引用標準庫的標頭檔案,編譯器將從標準庫目錄開始搜尋。

用# include 「filename.h」格式來引用非標準庫的標頭檔案,編譯器將從使用者的工

作目錄開始搜尋。

3.一般標頭檔案中只存放宣告,不存放定義。

4.類的成員函式可以在宣告時被定義,成為內聯函式。內聯函式可以提高函式

的執行效率,但會擴張**,不建議。

二﹑變數與表示式

變數初始化:盡可能在定義變數的同時初始化該變數。

int width = 10; //定義並初始化變數

長行拆分:長表示式要在低優先順序操作符處拆分為新行,操作符放在新行之首,以突出

操作符。

修飾符:應將修飾符*和&緊靠變數名。

char *name;<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

int *x,y; //此處y不會被誤認為是指標

類的版式:以行為為中心,即成員函式在前。

命名規則:1.類的成員函式用動詞box->draw();

2 .全域性函式用動詞+賓語drawbox();

運算優先順序:用括號確定表示式的操作順序。

if((a|b)&&(a&c))

復合表示式:不要與真正的數學表示式混淆。

if(aif((a

而表示if((a

布林變數:不可將布林變數直接與true,false或者0,1相比較。

if(flag) if(!flag) 正確

if(flag == true) 不良風格

if(flag == 0) 不良風格

浮點變數:不可將浮點變數與任何數字相比較,因為float和double都有精度限制。

if (x == 0.0) 不良風格

if((x >= -epsinon) && (x <= epsinon)) 正確,其中epsinon為允許的誤差即精度。

指標變數: 應將指標變數與null比較。

if( p == null) 正確

if( p == 0) 不良風格

if( p ) 不良風格

for迴圈:1.多重迴圈中,最長的迴圈放在最內層,最短的迴圈放在最外層。

2.若迴圈體中存在判斷,且迴圈次數很大,宜將邏輯判斷移到迴圈體外。

3.不可在迴圈體內修改迴圈變數,防止for迴圈失去控制。

4.建議for語句的迴圈控制變數的取值採用半開半閉區間的寫法。

switch語句:1.每個case 語句的結尾,不要忘了加break。

2.不要忘記default分支。

const常量:1.#define巨集常量以及enum列舉常量的異同點: a.

const常量有資料型別,而巨集常量沒有資料型別。編譯器可以對前者進行型別安全檢查,而對後者只進行字元替換,沒有型別安全檢查,且在字元替換時可能會產生意外錯誤(邊際效應)。 b.

有些整合化除錯工具可以對const常量進行除錯,但不能對巨集常量進行除錯。 c.

用# define定義的巨集常量是全域性的。用const修飾類的資料成員,只能在類建構函式的初始化表中進行。const資料成員只在某個物件生存期內是常量。列舉常量在整個類中都恒為常量,且不會占用物件的儲存空間,它們在編譯時全部求值。缺點是:它的隱含資料型別是整數,其最大值有限,且不能表示浮點數。

高質量c c程式設計指南摘要 二 原創

有益的建議 1.變數 指標和陣列 被建立之後,應及時把它們初始化,以防止把未初始化的變數當成右值來使用。2.當心變數的初值,預設值錯誤,或精度不夠。3.當心資料型別轉換錯誤,盡量使用顯式的資料型別轉換,避免讓編譯器悄悄的進行隱式的資料型別轉換。4.當心變數發生下溢或上溢,陣列的下標越界。5.當心檔案...

《高質量c c程式設計指南》學習摘要

1.盡可能在定義變數的同時初始化該變數 就近原則 防止忘記初始化,引用未被初始化的變數,可能導致程式錯誤 2.行最大長度宜控制在70 80個字元以內 長行拆分 否則眼睛看不過來,也不便於列印。例如 virtual cmatrix cmultiplymatrix cmatrix leftmatrix,...

高質量C 程式設計指南 一

第 1 章 檔案結構 標頭檔案的作 用 早期的程式語言如 basic fortran 沒有標頭檔案的概念,c c 語言的初學者雖然會用使用標頭檔案,但常常不明其理。這裡對頭檔案的作用略作解釋 1 通過標頭檔案來呼叫庫功能。在很多場合,源 不便 或不准 向使用者公布,只要向使用者提供標頭檔案和二進位制...