程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 編程人員怎樣才能寫出美麗的代碼(1)

編程人員怎樣才能寫出美麗的代碼(1)

編輯:C++入門知識

編程人員怎樣才能寫出美麗的代碼?本文將從以下10個方面講述:

1. 標識符(命名規則)

標識符應當直觀且可以拼讀,可望文知意,最好采用英文單詞或其組合,便於記憶和閱讀,切忌使用漢語拼音來命名。長名字能更好地表達含義,所以函數名、變量名、類名長達十幾個字符不足為怪,例如:

  1. 好的命名 int student_age,teacher_age;  
  2. 壞的命名 int age1,age2; 

但名字是否越長越好呢?不是的,請看下面的例子:

  1. struct student  
  2.      {  
  3.           int student_age;    /* 壞的命名 */ 
  4.           char *student_name;  
  5.      }  
  6. struct student  
  7.      {  
  8.           int age;               /* 好的命名 */ 
  9.           char *name;  
  10.      } 

為什麼前者不好呢,因為很多余,結構體的名student已經表達了student_age前面的student的意思。再比如字符串拷貝函數:void StringCopy(char *str1, char *str2);我們很難搞清楚究竟是把str1拷貝到str2中,還是剛好倒過來。可以把參數名字起得更有意義,如叫strSource和trDestination。這樣從名字上就可以看出應該把strSource拷貝到strDestination。單字符的名字也是有用的,常見的如i,j,k,m,n,x,y,z等,它們通常可用作函數內的局部變量。

2. 運算符的優先級

如果代碼行中的運算符比較多,應該用括號確定表達式的操作順序,避免使用默認的優先級。因為熟記各運算符的優先級是比較困難的,就算你熟記並正確使用了,寫出來的代碼也容易產生歧義而使其可讀性較差。

  1. 好的風格 if ((a | b) && (a & c))  
  2. 壞的風格 if (a | b && a & c)   

雖然後者和前者功能一樣,但後者是很恐怖的,難以閱讀。

3. 不要編寫太復雜的復合表達式。

復合表達式使用在適當的場合可以使代碼更加簡潔,但不能因為這個簡潔而帶來理解的復雜。

例如:

  1. max = a > b ?(a > c ? a : c) : (b > c ? b : c) // 復合表達式過於復雜 

應該修改為:

  1. max = a;  
  2. if(max < b)  
  3. {  
  4. max = b;  
  5. }  
  6. if(max < c)  
  7. {  
  8. max = c;  
  9. }  

上面的if的執行語句只有一行也加了{},是因為遵循了“不論if、for、while的執行語句有多少都要加{}”的規則,這樣可以防止書寫失誤,當這樣的語句層層嵌套的時候你就會知道這樣做的好處。

4. 各種數據類型與零值比較

在JAVA中,對於布爾變量flag,與零值(注意:不是0)比較的方式自然是if (flag== TRUE)或者if (flag == FALSE),但是在C/C++中這卻不是正確的選擇。正確的選擇應該是if (flag)或者if (!flag),這是因為TRUE的值究竟是什麼並沒有統一的標准,例如Visual C++ 將TRUE定義為1,而Visual Basic則將TRUE定義為-1。if (flag == TRUE)、if (flag == 1 )、if(flag == FALSE)、if (flag == 0)都屬於不良風格。

應當將整型變量用“==”或“!=”直接與0比較。

  1. if (value == 0)  
  2. if (value != 0) 

不可以寫成

  1. if (value) // 會讓人誤解 value是布爾變量  
  2. if (!value)   

指針變量的零值是NULL。盡管NULL的值與0相同,但是兩者意義不同。對於指針變量p ,它與零值比較的if語句如下:

  1. if (p == NULL)  
  2. if (p != NULL) 

不要寫成

  1. if (p == 0) // 容易讓人誤解p是整型變量  
  2. if (p != 0)   

5. 多層if語句

不要出現這樣的結構:

  1. if (condition1)  
  2.  {  
  3.     …  
  4.      if (condition2)  
  5.      …  
  6.        if (condition3)  
  7.        …  
  8.          …  
  9.  }  

而應該代之以if-else-if結構:

  1. if (condition1)   
  2. {   
  3. …   
  4. }   
  5. else if (condition2)   
  6. {   
  7. …   
  8. }   
  9. else if (condition3)   
  10. {   
  11. …   
  12. } …   

這樣的結構條理清楚,前者則容易導致寫到後來自己都不知道寫了些什麼的事實。可以用switch語句替換嵌套的if語句來實現多分支選擇。


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved