日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

良好的代码风格养成记

發布時間:2025/3/21 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 良好的代码风格养成记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

綜述

優秀的代碼風格如同一身得體的打扮,能夠給人以良好的印象。初學程序設計,首先必須建立良好的編程習慣,這其中就包括代碼風格。本文就代碼風格中的幾個重點問題進行了討論,并在文后給出了一份優秀的代碼作為風格模板。代碼風格不必花費太多專門的時間研究,在使用中不斷模仿模板代碼,輕輕松松就能寫出“專業的代碼”。

80字符,代碼行極限

無論時空怎么轉變,世界怎樣改變,一行80字符應始終銘記心間。古老的Unix終端以80列的格式顯示文本,為了讓源代碼與手冊具有最佳的可讀性, Unix系統始終堅持著80列的傳統。80列不多不少,足夠寫出一行有意義的代碼,同時也足夠顯示在終端屏幕,足夠打印在A4紙上。雖然時至今日,我們的屏幕分辨率早已足夠高,一行能夠顯示的內容遠超超過80字符,但我們的優秀傳統已經形成──幾乎所有的Unix/Linux內核源代碼以及聯機用戶手冊都嚴格地遵守著80列極限。如果你正好在使用Windows平臺下的Dev C++,你是否有注意到代碼編輯框里那條細細的灰色豎線?不錯,那正是代碼行極限。除了HTML、XML等冗長繁復的標記式語言,幾乎所有的語言都需要嚴格遵守代碼行極限,這包括C、C++、Java、C#、Python、PHP等等。不過有時,比如當PHP跟HTML打交道的時候,這個限制是可以暫時放松的。過長的代碼行總是不好的,好的代碼要始終保持苗條的身材。

Tab還是Space,眾說紛紜的縮進方式

代碼離不開縮進,關于縮進主要有兩個爭論,一個是該用空格(Space)還是用制表符(Tab),另外一個是該用4格縮進還是8格縮進甚至都不是。

先來談談Space與Tab的問題。堅持用Space的程序員會告訴你,如果你從來都不用Tab,那么你的代碼放到所有的地方看都是一樣的。沒錯,這是用Space縮進的優點,可惜的是,這是它唯一的優點。代碼層次越多,內層代碼最前面的縮進便越多,這意味著你需要敲很多很多次空格。即使你能忍受不厭其煩地按空格鍵直到它壞掉,你也一定會被IDE總是自作聰明地插入一些Tab字符的行為煩惱不已。建議總是使用Tab縮進,因為幾乎所有的代碼(不僅僅是C 代碼)都在使用Tab縮進。

Tab到底是4格還是8格?這是Tab縮進會被某些人詬病的根源。當你寫程序時使用的Tab大小與別人讀程序時使用的Tab大小不同時,再漂亮的排版也會變得雜亂無章。標準的Tab是8格的,而不幸的是,幾乎所有的Windows平臺下的IDE,包括 Visual Studio、Dev C++,甚至跨平臺的Eclipse等,都默認使用4格Tab。我使用的FreeBSD系統的所有的內核源代碼都采用8格縮進,所以我一直堅持使用8格縮進。也許你不習慣太大的間距,如果不是在Unix平臺下,或者不是C語言,那就采用4格Tab吧。如果你在Unix下編寫C代碼,使用8格的標準Tab是更好的習慣。

折行原則,容易被忽略的角落

既然有代碼行極限,很多情況下我們不得不斷開一個完整的代碼行,這就帶來了一個問題:折行后應該如何縮進?好的做法是,第一次折行后,在原來縮進的基礎上增加1/2的Tab大小的空格,之后的折行全部對齊第二行??赡苓@樣的文字描述過于晦澀了,還是舉個例子罷(以8格縮進為例):

if(value > a && value > b && value > c && value < d && value < e && value < fvalue < h && value < h) { /* 注意折行后的縮進 */value = value + 1;value = value * value * value * value * value * value * value * value* value * value + value * value * value * value * value * value* value * value; /* 注意再次折行后的縮進 */ }
1 2 3 4 5 6 7 if (value > a && value > b && value > c && value < d && value < e && value < f ????value < h && value < h) { /* 注意折行后的縮進 */ ????????value = value + 1; ????????value = value * value * value * value * value * value * value * value ????????????* value * value + value * value * value * value * value * value ????????????* value * value; /* 注意再次折行后的縮進 */ }

顯然這個段代碼沒有任何實際用處,只是為了說明折行縮進而編造的。

無處不在的空格,無處不在的空行

需要空格的位置有:

  • if、while、switch等關鍵字與之后的左括號(之間。
  • 左花括號{之前。
  • 雙目運算符兩側,例如p == NULL。
  • 逗號,與分號;之后,例如for (i = 0; i < 10; i++)。

不要空格的位置有:

  • 函數名與之后的左括號(,包括帶參數的宏與之后的左括號(,例如max(a, b)。
  • 分號;與冒號:之前。
  • 左括號(右邊,右括號)左邊,例如if (p == NULL)。

需要空行的位置有:

  • 函數的定義之前、函數的定義之后
  • 一組聯系緊密的代碼段之前和之后

這些規則并不完全,當你碰到上面沒有列舉出來的情況時,請參考本文提供的模板代碼。

左花括號的爭議──換行乎?不換乎?

這又是一個仁者見仁智者見智的問題了。從使代碼更清晰的角度看,作為代碼段開頭標識的左花括號{應該另起一行:

if (p == NULL) {printf("error!\n");exit(0); }
1 2 3 4 5 if (p == NULL) { ????????printf("error!\n"); ????????exit(0); }

可是,這看起來實在不夠緊湊,所以大部分的C代碼(至少Unix上如此)都采用了這樣的方式:

if (p == NULL) {printf("error!\n");exit(0); }
1 2 3 4 if (p == NULL) { ????????printf("error!\n"); ????????exit(0); }

我的建議是采用后者,這會使你的代碼顯得更加緊湊,也更加專業。需要說明一個特例,在定義函數時,我們總是要給左花括號 { 換行:

static int maxint(int a, int b) {return a > b ? a : b; }
1 2 3 4 static int maxint(int a, int b) { ????????return a > b ? a : b; }

額,不過我還是不太習慣額

總結

本文介紹了編程的代碼風格,希望對大家有幫助

本文內容為轉載,原文出處

轉載請注明:靜覓 ? 良好的代碼風格養成記

總結

以上是生活随笔為你收集整理的良好的代码风格养成记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。