遊戲編程,變數命名用拼音可以嗎?

在開發一些特殊背景的遊戲時候,開發人員習慣用拼音直接做變數名。這樣做的好處是什麼?(開發團隊均是中國人)我可以理解,這樣便於可讀性更高。但內心總覺得這樣不太「標準」。還是想費力的去找對應的英文。
比如:三國類遊戲, huaRongDaoNPC(華容道NPC) 這樣的。
不知道其他行業是否也有這樣的情況?


如果是技術術語,建議使用英文。
如果是專門的遊戲邏輯,沒有合適的英文可以用漢語拼音。
但因為漢語同音字多,有較大機會產生歧義。國際化時其他團隊也有可能會遇到些麻煩。


除了太長外沒啥壞處。
切記不能只用首字母簡寫。


我覺得如果是發布的產品的話,可以考慮用拼音。
比如,360後台進程,名字:zhudongfangyu(據說是為了接地氣)
雨血:蜃樓的試玩版名字就叫:shenlou_……

但是作為程序員本身,可能會對英文style的東西更親切。當然,一個命名良好的英文變數名,立刻就把逼格指數提升上去了。
況且,很多專業術語簡單明了,何樂而不用呢?


若為遊戲角色創建一個」筋斗雲「技能函數, 用英文恐不合適。


拼音+聲調
降龍十八掌 xiang2long2shi2ba1zhang3
天山六陽掌 tian1shan1liu4yang2zhang3


據我所知,有的項目要求極高的安全性,需要對代碼進行混淆、加密處理,這時採用拼音的確是效果良好、成本低廉的方式。也有爲了效果,特意調研開發人員的家鄉方言、採取粵語、吳語等方言拼音方案的個例;對於有小語種背景的,也可以採用小語種名稱。與此同時以 Python、C#、Cpp 以及 Swift 爲代表的許多編程語言也引入了 Unicode 支持,直接使用漢字作爲變量名與方法名也可以實現。(感謝各位在評論中的補充)


有些東西也不好譯成英文吧?那還不如用拼音呢……


你不如直接用中文
曾經嘗試過用中文 不過有幾個問題不得不面對

1.中文沒有大小寫 不能像英文一樣通過首字母大寫表示類型 小寫表示變數 並且通過首字母大寫 首字母小寫 所有字母小寫 所有字母大寫 可以組合出多種形式 表示不同的東西 中文難以辦到 只能添加描述 顯得冗餘繁雜
解決辦法:
可以通過在類名稱後面加上類型 不過對於例如整數這種類型 看起來會很冗長 彆扭
並且和模版在一起的時候 想要描述一個類型的類型 更是會變得異常的長 難以閱讀

class Matrix{};
Matrix matrix;

Int i;

template &
class Matrix {};

#define class 類

類 矩陣類型{};
矩陣類型 矩陣;

整數類型 整數;

模版&<類型 標量類型的類型&>
類 矩陣類型 {};

2.中文漢字不適合作為符號 英文卻每個字母都能作為符號 對於數學表達式 邏輯表達式 極其不利
解決辦法:
可以嘗試使用甲乙丙丁

int a,b,c,d;

整數類型 甲,乙,丙,丁;

3.中文作為象形文字 天生和阿拉伯數字 數學符號這種符號文字不合 不光書寫違和而且對於文字對齊也不利

class Rect
{
private:
Point p0,p1;
};

Vec v0,v1;
Vec v2 = v1 - v0;

類 矩形類型
{
私有:
點類型 點0,點1,點2;
};

向量類型 向量0,向量1;
向量類型 向量2 = 向量1 - 向量0;

4.中文縮寫規則複雜 非常用的縮寫 常常讓人不知所謂 英文縮寫規則較明確 並且幾乎任何單詞都能縮寫

Img i;
DNA dna;

圖類型 圖;//到底想表達Graph還是Image呢?
核酸類型 核酸;//你說這樣合適么

5.中文輸入量大 導致大量時間被浪費在鍵入文字身上 並且代碼冗長 同等長度代碼 信息量少 噪音多 增加閱讀難度

使用感受:
當你打開你的代碼 感受到黑壓壓一片方塊字
頓時感覺腦中一片亂麻
難以閱讀 信息冗餘量大 噪音多
簡單的代碼瞬間會感到很繁雜

結論:
不建議使用中文書寫程序
因為代碼實際上是表現演算法和邏輯
這種東西用簡單的符號文字應該比較合適
不過也未嘗不可 可以嘗試


特殊背景嘛……有的東西真的很難翻譯成英語的,不要太長就可以了。
另外如果統一的話那麼用縮寫也不是不可以(比如整個項目全是 hrdNpc , hrdScene, hrdBlock 這種),但是你不能把 華容道 跟 Hardware 都縮寫成 hrd ,會出大事……

另外,現在 IDE 都那麼智能了,有 Highlight All 功能的話局部變數就隨便起吧。如果作用域只有那麼兩三行,隨便起用個 npc 都可以啊……

===
看了其他知友的回答,中英混合有的時候會死人……
比如上中學的時候有一本書,書名華麗麗的印著…… GEOGRAPHY DITUCE ……
還有類似 Somersault cloud 這種萬萬不可……


每次我寫代碼都去查查變數名的英語表達是什麼,,單詞很容易就背下了。。。


我覺得 huaRongDao 比 huaRongRoad 要好多了。


剛才聽我後面的同事吐糟自己:

有一天我用拼音定義一個變數名(嫦娥 chang e):

local change = "xxx"

然後改天去debug代碼的時候, what a fuck !!! change (改變) 是什麼意思, 回味了好久才明白過來!!

然後就尼瑪再也不用拼音做變數名了.


拼音寫全的話除了長,倒是沒啥問題,提醒題主千萬別用拼音首字母簡寫給變數和函數命名!要瘋的!


我個人是不太喜歡用拼音的

雖然由漢字聯想到拼音很簡單,但是反過來就很難了,有時候自己都不知道這個變數是幹嘛的,還得靠注釋,不過既然有注釋的話,用英文也可以啊。


華容道 英文也是 Huarongdao
其他行業也有 你看京東 就是jd


HuabRongbDaod這樣如何?
用小寫的abcd代表聲調!
華容道!


我覺得中國文化的名稱原本就是拼音的,遊戲的對象名兵器名等都應該是可以拼音的,再不成可以試試變數命名神器,參考下面的
編程的時候 命名 方法或變數 詞窮了怎麼辦? - unbug 的回答


我經常這麼干。。。關鍵更多的時候英文看著一目了然 而拼音還得理解半天 那還是用英文吧


推薦閱讀:

函數式語言開發 GUI 是不是自虐?
有哪些支持多種語言的 IDE ?
各種編程語言的實現都採用了哪些垃圾回收演算法?這些演算法都有哪些優點和缺點?
全python項目,使用protobufThrift適合嗎?
Haskell中的惰性求值如何實現?

TAG:編程語言 | 命名規則 | 遊戲編程 |