Coding convention (或者狹義一點的 coding style) 主要是用來作為撰寫程式碼時的指引,涵蓋範圍包括但不限於命名、語法、格式等,其好處是藉由設計過的命名方式降低名稱衝突的發生、以特定的語法規範避免意外產生邏輯錯誤又難以一眼挑出的 bug、讓整份程式碼 (尤其是多人共同開發的情境) 能擁有較一致的撰寫風格、讓程式碼較容易閱讀、... 等。
雖然 coding convention 有這些好處,但實務上要推行也不是那麼容易,因為每個人的寫作習慣與偏好各有不同,coding convention 便是需要團隊中的大家放棄一些自己原本的習慣與喜好。此外,「什麼算是好的寫作風格」對每個人來說可能定義都不同,因此在訂立 coding convention 時,究竟該以誰的意見為準有時也會面臨挑戰,我就曾經被嗆過 XD... 再則,coding convention 應該要規範到多細節?過多的條目細項對大部份程式設計師來說可能根本就記不住,寫個程式如果大部份時間都得花在留意 coding convention 上頭,也可能降低了程式開發的效率與熱情,或是因為沒人記得住所有規則,最後這份 coding convention 落入形同虛設的下場。過去我就曾經經歷團隊裡花了兩三個月時間,從草擬提案、討論細則、開放投票來決定 coding convention,這段時間 project 的程式碼都寫一堆了,最後定案的規範因為規則太細太雜結果也沒什麼人在執行...
以下分享的是目前我在工作上所使用的 C++ coding convention,因為團隊人數少,在溝通上節省了許多時間。還是要再次聲明,coding 風格孰好孰壞十分主觀,這份規範就算適用在我所處的團隊中,不見得就同樣適用在其它地方,若欲參考請再依您所處的環境斟酌調整。:-)
1. Terminology
1.1 All Capitalized
CUSTOM_NAME
1.2 All Lowercase
custom_name
1.3 Camel Case
A word with the first letter lowercase, and the first letter of each subsequent word-part capitalized.
customName
1.4 Hungarian Notation
An identifier naming convention in which the name of a variable indicates its type.
nCount // prefix n for number
strName // prefix str for string
pObject // prefix p for pointer
m_nRound // prefix m_ for class member and n for number
1.5 Identifier