歡迎您光臨本站 註冊首頁

養成良好的Linux編碼風格

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0

Linux操作系統是一個開源的操作系統,為此你在Linux系統上開發的一個工具軟體,包括源代碼,可能其他系統管理員也需要用到.為此在編寫代碼的時候,就需要遵守一定的規則.這不僅是為了方便他人的閱讀,也是為了以後自己的維護與升級考慮.具體的來說,筆者認為Linux系統管理員要養成下面的一些好的編碼風格.

  一、 合理防治函數開頭的左花括弧.

  根據大部分系統管理員認可的編碼風格,往往將函數開頭的左括弧放到代碼頁的最左邊.要避免將其他的括弧(包括左花括弧、左括弧或者左方括弧)放到最左邊.這主要是為了便於閱讀.因為函數的主體內容往往是有一對花括弧括起來的.如果在代碼頁的最左邊只有代表函數的花括弧,那麼就可以一目了然的看到函數的主體.為此這是提高代碼閱讀性的一個很好的手段.

  需要注意的是,這可能跟其他語言的編程風格有所差異.如在Java語言或者C語言平台上,往往將函數主體開頭的花括弧放在函數的後面.如在main函數後面會直接使用{這個左花括弧.不過這不利於程序的閱讀,不利於Linux系統管理員找到函數的主體代碼.為此如果有其他編程語言使用經驗的系統管理員,最好能夠改變這種書寫習慣.筆者建議,系統管理員還是要將這個花括弧放在最左邊,並保證在整個代碼中,最左邊出現的花括弧都是代碼函數主體的花括弧.

  二、 每個函數開頭最好都有一個簡短的代表功能的說明.

  在Linux的功能代碼中,其各個功能也都是一個個函數或者程序構成的.也就是說,在一個代碼文件中,可能會有很多個函數構成.那麼這些函數主要用來實現什麼功能呢?如果不做任何說明的話,那麼只有看完函數的全部代碼之後才能夠了解這個信息.這對於他人閱讀源代碼會造成比較大的障礙.,時間久了之後,可能連繫統管理員自己都不知道這個函數時用來實現什麼功能的.這對於其後續維護與升級顯然是不利的.為此筆者建議各位系統管理員,無論是為自己還是為他人,最好在每個函數或者程序的開頭都寫上一小段註釋.好記性不如爛筆頭,這對於提高代碼的易讀性.另外需要說明的是,由於Linux系統可能對中文的支持並不是很好,為此在寫這個註釋的時候,最好採用英文書寫.因為在一些對中文支持並不是很好的系統中,這個中文會顯示為亂碼,此時就起不到應有的作用了.如果不懂英文的話,那麼可能只有使用拼音了.當然這只是笑話.一般Linux系統工程師對於英文需要一定的了解.因為Linux操作系統中的幫助文檔都是英文寫的.這個英文的語言關也是系統管理員必須要解決的關口.

  另外在對函數進行說明時,最好還需要著名這個函數需要用戶傳入什麼參數,會返回什麼樣的結果.以及參數、結果的個數等等.這對於代碼的編譯與維護非常有幫助.項目團隊中的其他成員如果要引用你這個函數的話,那麼不需要查看函數的具體代碼.而只需要查看一些這個註釋,就可以知道需要傳遞進去哪些參數.這也是提高項目合作效率的一個手段.

  三、 If語句使用要規範.

  在Linux系統中編寫代碼時,IF語句是使用的最多的結構之一.這個if語句主要用來實現一些邏輯的判斷.雖然這個語句本身比較簡單,但是在使用這個語句時,最好也能夠遵守一些規則.雖然這些規則主要是從易讀性的角度去考慮的,但是對於編寫一個準確的IF結構語句也有所幫助.

  如根據Linux系統的編程習慣,最好不要在IF的條件中進行賦值.IF語句需要根據某個條件來進行判斷該採取什麼樣的操作.在這個條件中,根據語法是可以在這個條件中對變數進行賦值的.但是這不符合Linux系統下的編程風格.筆者建議,最好在IF結構外部對變數進行賦值,然後再在條件中直接使用這個變數.這更易於控制IF結構.另外,如果在IF語句中使用嵌套的話,可以使用花括弧將嵌套的IF ELSE語句括起來,以利於發現這個嵌套語句.在其他應用程序編寫過程中,是使用縮進的方式來凸現IF嵌套結構的.但是Linux系統管理員更加喜歡使用花括弧.雖然這兩個沒有實質上的區別,但是筆者還是建議採用花括弧.因為這是一個Linux操作系統業內普遍認可的一個編碼風格.

  四、 大小寫書寫要規範.

  雖然函數名或者變數名採用大寫字元或者小寫字元都是允許的.但是在定義這些名字的時候,大小寫最好還是要符合一些常見的規則.如對於函數的名字最好使用小寫的英文字元.如果有多個單詞構成的話,最好使用下劃線來進行分割.而不是採用第一個英文單詞大寫的方式.大小寫混用在某些環境中或許是很不錯的解決方式,但是在Linux系統中不行.而對於變數來說,要根據變數的類型來確定使用小寫字元還是採用大寫字元.一般情況下,如果是系統管理員自己定義的變數,那麼最好使用小寫字元.如果採用的是系統變數的話,那麼可以使用大寫的英文字母.如此的話,一看到變數的大寫還是小寫的狀態,就可以判斷使用的是用戶自定義變數還是系統變數.另外在Linux系統中也需要用到一些常量.根據大家的編程習慣,往往利用大寫字元來定義常量.如系統管理員在學習其他高手編寫的代碼過程中,可以發現在枚舉或者宏中都是利用大寫字元來代表常量的.

  在確定使用大寫還是使用小寫字元之前,需要明確的一點就是在Linux操作系統中大小寫是敏感的.也就是說,Name與name是代表兩個不同的變數.為此在系統中規範大小寫的格式就顯得尤其的重要.由於大小寫敏感,在同一個名字中混用大小寫會讓變數或者函數的應用變得很複雜.故如果一個名字有好幾個單詞構成,那麼系統管理員要習慣利用下劃線來進行單詞的分割,而不是採用第一個單詞大寫的形式.

五、 代碼該分行是就需要分行.

  雖然Linux操作系統的編譯器對於分行沒有嚴格的要求.如幾個變數都可以在同一行中定義,或者在同一個行中對多個變數進行賦值等等.只要採用了合適的分割符,就可以編譯通過並得到正確的執行.但是如果系統管理員真的這麼做的話,那麼筆者告訴你,你會被同行笑話的.因為這使你不專業的表現.根據Linux操作系統通用的編程風格,編寫代碼時該分行是就需要分行.

  如在變數或者常量定義時,一般都是一行定義個變數或者常量.在編寫一些複雜結構語句時,如IF或者循環結構,也往往是採取分行的格式.即使代碼很簡單,一行就可以寫完.但是仍然會根據其不同的部分,將其分割成兩行甚至多行.這有利於系統管理員閱讀代碼.另在程序的不同部分,也最好能夠採取分行的方式來進行隔離.如函數與函數之間,變數聲明與函數之間,註釋與代碼之間等等.可以加入一到兩行的空行,來提高閱讀的便利性.反正這不會對程序的性能造成影響.

  類似的編碼風格還有很多.如兩個不同運算級別的操作符號組好不要在同行中出現;不要跨行聲明多個變數,即變數的聲明最好放在同一個地方,以方便同一管理,等等.這些規則需要系統管理員他人編寫的代碼中去體會與總結.多看看一些專家級人物寫的代碼,往往可以給我們帶來很大的收穫.

  筆者要說的是,這些規則並不是強制性的.也就是說你即使不遵守這些規則的話,Linux系統編譯器也不會認為你的代碼有問題,可以正確執行.但是每個行業除了要遵守一些強制的法律法規之外,還需要遵守一些行業性規範.而這些編碼的風格就是Linux操作系統的行業性規範.如果系統管理員不遵守的話,可能會被大家排斥.,系統管理員最好還是花點時間和精力去學習這些行業規範.



[火星人 ] 養成良好的Linux編碼風格已經有648次圍觀

http://coctec.com/docs/linux/show-post-53358.html