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操作系統的行業性規范。如果系統管理員不遵守的話,可能會被大家排斥。所以,系統管理員最好還是花點時間和精力去學習這些行業規范。