第九章 數(shù)據(jù)名稱
9.1 選擇名稱
在給變量命名時,考慮的問題是變量名稱是否完全而又準確地描述了變量所代表的實體。
一個好記的名字通常是面向問題而不是解決問題的。
往往用Count來表示總數(shù),而用Index來表示下標。這樣,SalesCount表示的是賣出的總數(shù),而Saleslndex則指的是賣出的某一種特定商品。
9.2 特定數(shù)據(jù)類型命名
循環(huán)變量命名:如果循環(huán)變量還要在循環(huán)外使用,那么應該用比i、j、k更能說明問題的名稱。
狀態(tài)變量命名:用比flag更好的名稱來命名變量,最好不用flag作為狀態(tài)變量的名字。
臨時變量命名:名義上給變量一個“臨時”的狀態(tài),因而程序員們在處理它們時往往會采取漫不經(jīng)心的態(tài)度,從而增大了出錯機會。
邏輯變量命名:Done、Error、Found、Success
枚舉類型命名:可以通過使用相同的前綴或后綴表示某一類型的元素都是屬于同一組的
常量命名: 應該用它所代表的抽象實體而不是數(shù)值來命名
9.3 命名約定
一句話, 使用有意義的名稱。
9.4 非正式命名約定
標識全局變量。常見的編程問題之一是誤用全局變量。可以在所有的全局變量前面都加上g_作為前綴來解決。
標識模塊變量。模塊變量是在模塊內(nèi)部供幾個子程序使用的變量。
標識類型定義。類型的命名約定需要有兩個功能:它們要明確地指出某一名稱是類型名稱,同時要可以避免類型名稱與變量名稱相沖突。
標識命名常量。需要對命名常量加以標識,以便可以使你知道是在用一個變量.
標識枚舉類型。與命名常量同樣的原因,枚舉類型也需要被標識出來。
標識輸入?yún)?shù)。有時輸入?yún)?shù)會被錯誤改動
對名字作格式化以增強可讀性。增強可讀性常見的兩項技術是用分隔字符或大寫字母將單詞分隔開來。
C約定
有些命名的約定是只適用于C的,可以在C中使用這些約定,也可以改變它以使其適應其它語言。
· c和ch是字符變量
· i和j整型下標
· n是數(shù)量
· p是指針
· s是字符串
· 預處理程序宏指令是以全部大寫來表示的,這通常擴展到包含typedef
· 變量和子程序名稱都是小寫的
· 下劃線“_”用做分隔符
9.5 匈牙利命名約定
匈牙利命名約定是一整套對子程序和變量進行命名的詳細約定.
匈牙利命名主要包括三個部分:基本類型、一個或更多的前綴、一個限定詞。
9.6 短名稱
縮寫使用的總體準則:
· 使用標準的縮寫(常用縮寫,如列在字典縮寫表中的)。
去掉所有的非大寫元音字母(如Computer寫成Cmptr,Screen寫成Scrn,Integer寫
成Inter等)。
· 使用每個單詞的頭一個或頭幾個字母。
· 截掉每個單詞頭一至三個字母后面的其余字母。
· 使用變量名中每一個有典型意義的單詞,最多可用三個單詞。
· 每個單詞的第一個和最后一個字母。
· 去掉無用的后綴——ing,ed等等。
· 保留每個音節(jié)中最易引起注意的發(fā)音。
· 反復交替地使用上述技術,直到變量名長度縮短至8到20個字母為止
關于縮寫的建議
不要通過拿掉單詞中一個字母進行縮寫
縮寫應保持一致性
使用容易發(fā)音的縮寫。
用注解表來說明短名稱
避免在名稱中使用數(shù)字.
9.8 小結(jié)
恰當?shù)淖兞棵强勺x性好的必要條件之一
命名約定可以區(qū)分局部、模塊和全局變量
不管你從事的是哪種項目,都應該采用命名約定
匈牙利約定是一種非常有效的命名約定