C語言的良好程式設計習慣
從程式設計菜鳥一路走來,慢慢對程式設計習慣有了一個新的認識。因為曾經我寫的程式碼的可讀性令自己也感到哭啼皆非,搞得自己暈頭轉向。今天特意來分享一下自己的一些關於程式設計習慣的心得。
很多人以為程式碼一敲完,能得到預期的結果,就萬事ok,其實不然。後面的程式除錯、維護和升級是一個專案中很重要的一部分,這就要求我們必須規範程式設計習慣。
(1)模組化程式設計
試想一下,如果一個專案的所有功能都在一個main.c裡面實現,這閱讀的難度可想而知,初次接觸這個專案的新手估計得花上好幾天來搞定其中的邏輯功能關係吧!而且心裡還一直罵著這個程式的開發者。模組化的目的就是為了降低程式的複雜度,使程式的設計、維護和除錯都易於處理。
模組化程式設計要求我們活用.c和.h檔案。我們該怎麼做呢?例如要實現一個溫溼度感測器讀取資料的功能,我們可以在getData.c檔案裡面編寫溫溼度感測器讀取資料的驅動函式,然後在getData.h檔案裡面宣告該驅動函式和所需的外部變數等等,最後在main.c檔案裡面包含getData.h檔案,就可以在main.c檔案裡面引用所需的溫溼度感測器讀取資料的驅動函式。getData.h檔案實際上起到一個介面作用。同理,我們可以使一個子功能用一個.c和.h檔案來實現,到最後在main.c檔案中用#include包含所有子功能的.h檔案,便可以有效組織起整個專案的架構,使其他人對整個功能需求一目瞭然。
(2)善用#define
修改程式煩不煩?很煩!尤其是數不清的數字和埠引腳(嵌入式)。那麼此刻#define就派上用場了。我們經常把一些以後根據需要改動的數字用巨集定義在表示:
#define RX_BUF_MAX_LEN 1024 //接收區緩衝位元組最大長度
那麼以後需要用到1024這個數字時,則使用RX_BUF_MAX_LEN:
char Data_RX_BUF [ RX_BUF_MAX_LEN ];//定義接收緩衝區
若以後接收區緩衝位元組最大長度有改變,則直接修改1024,多方便啊!同理,對於一些埠引腳同樣可以使用巨集定義,以便以後更改引腳後,直接在巨集定義裡面改,免得在整個程式裡面找這個引腳找得焦頭爛額,還擔心有遺漏!
(3)命名規則很重要
這個太重要了!如果一個程式沒有任何註釋,讀者還能看懂,說明程式編寫者充分發揚了程式自注釋的特點,這樣的程式簡直賞心悅目!當中就涉及到命名的重要性。實際上一個團隊必須要有自己的命名規則,否則最終出爐的程式的易維護性和易讀性會大幅下降。
敲程式碼畢竟是外國人發明的東西,因此首先要強調的是變數名或函式名都必須要用英文單詞或者其有效的縮寫!如果你要使用要義不明的英文字母,對不起,你的程式碼就已經打折扣了。其次怎麼寫也很重要,當前使用非常廣泛的命名規則是駝峰命名法,也即當變數名或函式名是由一個或多個單詞連線起來時,第一個單詞以小寫開頭,往後每個單詞都以大寫開頭,比如getWeight();人家一看這個函式名就知道它的作用是取得重量值。
其實還有很多良好的程式設計習慣,這裡就不一一列舉。總之,良好的程式設計習慣能節省你很多寶貴的時間!