国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

改善編碼風格

2019-11-17 06:13:47
字體:
來源:轉載
供稿:網友
  應該說,我們中的許多人,編程的歷史并不短,但很多時候,我們對自己編寫出來的代碼卻毫無自信,有時候自己見了都怕,盡管這段代碼實現了要求的功能。
歸其原因,往往是代碼風格差導致的代碼凌亂沒有美感,本文的目的就是要講解一般的良好風格,幫助讀者寫出“漂亮”的代碼,事先要說明的是文中所涉及到的語言有C、C++、java及BASIC,我之所以用了三種語言而不是只用一種語言是為了向讀者表明風格對語言的通用的。

  1)標識符(命名規則)

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

  好的命名 int student_age,teacher_age;

  壞的命名 int age1,age2;

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

  strUCt student

  int student_age; /* 壞的命名 */

  char *student_name;

  struct student

  int age; /* 好的命名 */

  char *name;

  為什么前者不好呢,因為很多余,結構體的名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)運算符的優先級

  假如代碼行中的運算符比較多,應該用括號確定表達式的操作順序,避免使用默認的

  優先級。因為熟記各運算符的優先級是比較困難的,

  就算你熟記并正確使用了,寫出來的代碼也輕易產生歧義而使其可讀性較差。

  好的風格 if ((a b) && (a & c))

  壞的風格 if (a b && a & c)

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

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

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

  例如:

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

  應該修改為:

  max = a;

  max = b;

  max = c;

  上面的if的執行語句只有一行也加了,是因為遵循了“不論if、for、while的執行語句

  有多少都要加”的規則,這樣可以防止書寫失誤,

  當這樣的語句層層嵌套的時候你就會知道這樣做的好處。
 
  4)各種數據類型與零值比較

  在JAVA中,對于布爾變量flag,與零值(注重:不是0)比較的方式自然是if (flag

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

  if (value == 0)

  if (value != 0)

  不可以寫成

  if (value) // 會讓人誤解 value是布爾變量

  if (!value)

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

  if (p == NULL)

  if (p != NULL)

  不要寫成

  if (p == 0) // 輕易讓人誤解p是整型變量

  if (p != 0)

  5)多層if語句

  不要出現這樣的結構:

  if (condition1)

  …

  if (condition2)

  …

  if (condition3)

  …

  …

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

  if (condition1)

  …

  else if (condition2)

  …

  else if (condition3)

  …

  …


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 华蓥市| 汉源县| 临高县| 大埔区| 海口市| 维西| 嫩江县| 嘉善县| 金秀| 当涂县| 洪江市| 林甸县| 醴陵市| 鲁甸县| 临夏市| 肃北| 永寿县| 历史| 保康县| 沂水县| 中牟县| 普兰店市| 中阳县| 柳林县| 濮阳市| 吴忠市| 罗定市| 时尚| 长春市| 海宁市| 新宁县| 牟定县| 东丰县| 明水县| 酉阳| 贵港市| 永康市| 连州市| 嘉禾县| 瑞丽市| 黑水县|