程式設計規範只是乙個規範,也可以不遵守,但是要做乙個有良好程式設計風格的程式設計師,就一定要遵守程式設計規範,不僅方便自己以後的閱讀,也可以方便與其他程式設計師的交流,要做到這一點,程式設計師應遵循一定的規範並貫穿程式的始終。首要考慮的是程式的可行性,可讀性,可移植性,可維護性及可測試性,這是總則。
好的程式易讀,理想的情況:能把乙個程式**讀出聲音來,別人聽了後就知道這個程式是解決什麼問題的,是如何解決的;精煉簡潔:執行快,結構明了。
匈牙利命名法為c程式識別符號的命名定義了一種非常標準化的方式,這種命名方式是以兩條規則為基礎的:
a 變數的名字以乙個或者多個小寫字母字首開頭,字首能夠體現變數資料型別,作用域等資訊
b 在識別符號內,字首以後就是乙個或者多個第乙個字母大寫的單詞,這些單詞清楚地指出了該識別符號的作用。
(1)變數命名加字首
c char
s short
n int ndoornum
l long
b boolean 取值只為真和假的整型變數 如bvalid
f float
d double
a 陣列 a[5]
(2)變數名中單詞開頭字母大寫,其他字母小寫 但是常用的意義明顯的變數,如i,j,k,座標x,y等不必遵循1),
2) studentname , teachername
(3)常量和巨集都是大寫 單詞之間用 『_』分隔
# define max_width 5
# define pi 3.14
# define abs(x) ((x)>=0?(x):-(x))
識別符號命名應注意的一些細節:
(1)識別符號號應能提供足夠資訊,最好是可以發音的
(2)為全域性變數取長的,描述資訊多的名字,為區域性變數取短名字
(3)名字太長時可以適當採用單詞的縮寫。但要注意,縮寫方式要一致。要縮寫就全都縮寫。
比如單詞:number,如果在某個變數裡縮寫成了: int ndoornum ;那麼最好包含number單詞的變數都縮寫成num。
(4)注意使用單詞的複數形式。如:int ntotalstudents,nstudents;容易讓人理解成代表學生數目,而nstudent意義就不十分明顯
(5)對於返回值為真或假的函式,加「ls」字首如:
int lscancleld() ;
int isalpha() ; //c語言標準庫函式
bool lsbuttonpushed() ;
(6)對於獲取某個數值的函式,加「get」字首
char * getfilename() ;
(7)對於設定某個數值的函式,加「set」字首
void setmaxvolume() ;
(8)一般變數和結構名用名字,函式名用動詞或動賓片語
程式書寫格式注意事項:
(1)正確使用縮排
首先一定要有縮排,否則**的層次不明顯。
縮排應為4個空格較好。需要縮排時一律按tab鍵,或一律按空格鍵,不要有時用tab鍵縮排,有時用空格鍵縮排。一般開發環境都能設定乙個tab鍵相當於多少個空格。此時就都用tab鍵
(2)行寬與折行
if( condition() && condition2()
&&consition3())
(3)注意 『』位置不可隨意,要統一
如果寫了:
if(condition1())
別處就不要寫:
if(condition2())
(4)變數和運算子之間最好加1個空格
int nage = 5 ;
nage = 4 ;
if(nage >= 4)
printf("%d",nage) ;
for(i = 0;i < 100;i ++) ;
一些好的程式設計習慣:
(1)盡量不要用立即數,而用#define(c++中用const)定義成常量,以便以後修改
#define max_studentds 20
struct sstudent astudents[max_students] ;
struct sstudent astudents[20] ;
#define total_elements 100
for(i = 0;i < total_elements;i ++)
(2)帶引數的巨集定義應該在整個巨集體外加括號,而且巨集引數都要用括號包裹
#define square(x) x*x //平方
則 square(k+1) ; 變成 k+1*k+1 ;錯
即使 #define square(x) (x)*(x) 也不保險
1/square(x) ;變成 1/(x)*(x) ;錯
應該:#define square(x) ((x)*(x)) //平方
(3)稍複雜的表示式中要積極使用括號,以免優先順序理解上的混亂:
n = k +++ j ; //不好
n = (k++)+ j ; //好一點
(4)不很容易理解的表示式應分幾行寫:
n = (k++) + j ;應該寫成:
n = k + j ;
k ++ ;
(5)不提倡在表示式中使用?:形式,而用if ... else語句替代
xp = 2 * k <(n - m)? c[k+1]:d[k--] ;
if(2 * k < (n - m))
xp = c[k+1] ;
else
xp = d[k--] ;
(6)巢狀的if ... else語句要多使用{}
(7)應避免 if else的多重巢狀 而用並列的完成
(8)遵循一些慣例的寫法,如:
迴圈的固定寫法:
for(i = 0;i < n;i ++) array[i] = 0 ;
而非 i = 0 ;
while(i <= n-1) array[i++] = 0 ;
死迴圈寫法:
for( ; ; ) 或 while(1)
(9)寫出來的**應該容易讀出聲:
比如:if(!(n > m)&&(s > t))
就不如:
if((m <= n)&&(t <= s))
if(!(c == 'y' || c == 'z'))
不如:if(c != 'y' && c != 'z' ) ;
良好的程式設計風格
什麼是良好的程式設計風格 1.排版 if null dest null size a.較長的語句要分 2行來書寫,並用 符號隔開。b.函式 的引數過長,分多行來書寫。c.括號等。d.在 vs中 alt f8是對選中 排版 2.注釋a.邊寫 邊注釋,修改 同時修改相應的注釋,以保證注釋與 的一致性。b...
良好的程式設計風格
struct tagpersoninfo isawomen struct tagpersoninfo pesoninfo 在這段 中,isawomen本無宣告返回型別的,預設返回型別是int。但由於缺少 則isawomen真正的返回型別是tagpersoninfo。在類宣告的時候,也需要注意是否有 ...
程式設計風格良好的條件比較語句
a.假設布林變數名字為flag,它與零值比較的標準if語句如下。第一種 if flag true if flag false 第二種 if flag if flag b.假設整型變數的名字為value,它與零值比較的標準if語句如下。第一種 if value 0 if value 0 第二種 if ...