在編程時使用中文命名,包括類、變量、方法等的優勢_風聞
吴烜-2020-08-22 10:28
此文嘗試小結一些比起英文命名更方便之處. 注意這是在明確的母語優勢基礎上額外的優勢:
1. 不需要駝峯命名法或者下劃線分隔
之前看到過有人問"中文命名怎麼用駝峯命名法?". 答案是, 不用, 因為根本就不需要. 原因很簡單, 中文語言本身就不用空格分隔. 帶來的好處是, 中文命名和中文自然語言更加接近. 比較如下:
英文變量名: “weaponOfMonkeyKing” 或者 “weapon_of_monkey_king”
對應自然語言: “weapon of the Monkey King”
中文變量名: “孫悟空的武器” 對應自然語言完全相同
2. 單字變量視覺混淆更少
Python創始人親自編寫的Python命名規範《PEP 8 -- Style Guide for Python Code》就直接指出需要避免使用單字母的’l’, ‘O’, ‘I’(猜猜第一個還是第三個是大寫i?)進行命名:
Never use the characters ’l’ (lowercase letter el), ‘O’ (uppercase letter oh), or ‘I’ (uppercase letter eye) as single character variable names.
In some fonts, these characters are indistinguishable from the numerals one and zero. When tempted to use ’l’, use ‘L’ instead.
另外還有i, j在兩層循環中容易混淆等等, 而中文單字(如’甲’, ‘乙’, ‘丙’, ‘丁’等等)沒有這樣的問題
比如英文的冒泡算法:
改用中文作數組序號:
就不會有i,j看花眼的感覺。
3. 中文單複數模糊性更符合語義
原英文代碼:
中文命名後的代碼:
flaggedCells是個List, 它用複數命名的意思是”可能包含多個格”. 而實際上這個變量可能只包含一個格. 中文中的名詞不分單複數, 正好符合”這個變量有可能含有單個或多個元素”這個語義. 因此命名為被標的格感覺可行. 假如語義需要強調有多個(不可能只有單個或沒有), 可以考慮加上修飾如多個前綴等等.
4. 單字命名有更多選擇, 也更可讀
單字命名在英文命名中確實常見. 《Is the use of one-letter variables encouraged?》總結的比較全面, 還加了不少雙字母的.
由於英文字母總共26個, 加上大寫也很有限. 以至於有些字母有幾種用法, 比如k: 1) 在循環中表示變量 2) 在表中表示鍵. 而單字中文的選擇就多的多了. 比如(肯定有更合適的, 待集思廣益): index-位/索/引, file-檔, key-鍵(循環變量用’甲乙丙丁’之類, 就不會有上面的k的兩種用法問題), value-值. 而這些中文單字比起對應的英文字母來, 明顯更可讀. 比較: i-位/索/引, f-檔, k-鍵, v-值
5. 更不易筆誤,筆誤後也更容易發現
如最近看的一個官方文檔還看到了“valve”(value)這樣的筆誤,記憶裏也有過差一個字母debug時納悶的經歷。第二語言的拼寫本身比母語來的更易出錯,包括對於錯字的敏感度也更低。
6. 命名更易於對齊寬度,代碼看起來更齊整
中文可以等寬,這點很爽。
比如:
長 = 1
寬 = 2
温度 = 30
濕度 = 90
相比:
length = 1
width = 2
temperature = 30
humidity = 90