請問變數名以拼音命名有什麼弊端?

別人寫的類用拼音命名屬性,我說這樣命名是編程的一個不好的習慣,他卻說反正程序又不是給外國人看,不一定要英文吧。請問有什麼弊端足以讓他接受用英文命名?


1. 中文在很多場合下並不區分動詞和名詞。如submit和submission,中文都是tijiao

2. 中文在很多場合下無法輕易地區分單數和複數

3. 除非你永不直接使用外國人寫的庫,否則程序必然是中英文混搭。導致只習慣中文和只習慣英文的人都無法流暢閱讀。

4 . 拼音不是中文的慣用書寫方式。你長期使用某種語言來編程會有助於提高你在這個語言上的水平(逼著你去學和關注)。使用拼音你永遠無法流暢閱讀程序,使用英文則有此可能。

5. 學編程不學英文,你打算一直只看譯著和永不閱讀第三方庫的源代碼嗎?


大部分主流語言支持漢字作為變數名,那為什麼還要用拼音裝逼呢?


怎麼加音調?


yinweipinyindeyueduxingfeichangbuhao

yinweipinyindeyueduxingfeichangbuhao,jibianshijialebiaodian

YinWeiPinYinDeYueDuXingFeiChangBuHao,JiBianShiJiaLeBiaoDianHeDaXiaoXie.

YinWei PinYin De YueDuXing FeiChang BuHao, JiBian Shi JiaLe BiaoDian He DaXiaoXie, YiJi YongLe FenCi YeShi YiGe CaoXing.

You Qing Ti Shi, Ben Da An Cong Xia Wang Shang Du Bi Jiao Hao


1:逼死強迫症

2:難以理解(只是指我自己,別人是否便於理解我不知道,反正必須先確定這不是英語,然後按拼音拼一遍心裡默念之後才能知道意思)

3:不區分動詞/名詞,短詞容易造成功能混淆

4:同音詞太多,短詞沒有上下文,容易造成混淆

5:沒有分詞習慣,長詞難以分詞,更難以理解。比如:meiyoufencixiguanchangcinanyilijie

6:萬一team里來個老外,或者哪天你這代碼賣給外國人了,這可是連混淆都省了。

如果一定要用,起碼要規定分詞以及首字母大寫,比如:RuGuo_YiDingYaoYong_QiMa_YaoGuiDing_FenCi_YiJi_ShouZiMuDaXie

當然,對於這種便於理解的拼音命名(個人覺得也不好理解,只是略好),貌似比查個字典用英文還麻煩啊~實在要用,用漢字吧!!!

然而,用拼音命名的主往往是圖省事,怎麼方便怎麼來,最終往往是英文/拼音混著用,還不分詞。比如submitdingdan,tijiaoorder.....


作為二十一世紀的人才,國家的棟樑,人類的精英,未來維護世界和平的勇士,必須要精通最強大帝國主義敵人的語言。這不是能力問題,是態度問題。如果連畢業後僅有的必須要使用英語的場景都砍掉,那還怎麼能夠讀懂敵人的諜報,那還怎麼能夠袒護起中華名族偉大復興和世界和平的重擔!


隨心。有的用英文確實不好表達。


人類的適應力是非常強的,例如uplaodFile


長的帥又不是為了給林志玲看,長的寒磣點又無所謂。

不穿內褲又不會被別人看到,不穿也無所謂。

讀書反正又不會被別人看出來,不看也無所謂。


比如:xxglzxxz

xxglzxxg

這個東西你讓後來的人怎麼理解?

信息管理中心新增

信息管理中心修改


你們沒見過用火星文,繁簡交替寫注釋的吧?

明明知道他寫了,說明就在源碼某個地方,可特媽的就是搜索不到。

大小寫敏感算啥呃


沒什麼弊端,現在refactor這麼發達,我有時就用漢字做標識符。

但是如果你弄個莫名其妙的拼音或縮寫,在變數定義處加註釋是必要的。


我進來找的一個小企業 特么的全是拼音首字母命名 有病


編程規範,你真要拼音命名,好,沒問題,你全部都是拼音命名,但你寫的項目只能你自己看。你千萬別一會兒拼音,一會兒又是英文的


看來這個問題我能答一下,之前做過對歐美和對日的,最近偶爾轉到國內,長久以來聽聞國內高手雲集,本來抱著學習的心來的,結果看完第一本代碼後徹底崩潰了。

var qunaju =$("#qunaju");

這個是什麼鬼,是全局變數,但為什麼還要有引用自一個標籤。仔細一看原來是定義的一個hidden來代表全局變數,而且拼音還是錯的。

qj.val("youcuo");

這又是什麼鬼,qj是什麼,這種不讓播的東西居然可以寫到代碼里,(╯°Д°)╯︵ ┻━┻。再仔細一看,原來是和上面的那個一樣的作用是qunaju的縮寫,那為什麼同樣是全局的東西要定義兩遍呢?一問後來改代碼的人和之前的那個不是一個人。。。

function biaoba()

之後再看,喲,這是什麼方法,聯想起我所有的語文知識也看不出來啊,心想算了,看看邏輯吧,一看原來是取驗證碼的功能,我了個去。你這個和取驗證碼有什麼關係啊,巨崩潰。(╯°Д°)╯︵ ┻━┻

if(!bushiba)

崩潰的心還沒有平靜下來,一看方法里還有這個判斷。。。【不是吧】,那非【不是吧】是不是就是【是吧】的意思,心想之前的代碼已經崩壞到那種程度了,這個絕不會這麼簡單就是這個意思。於是,扶了扶眼鏡懷著破案的心理調查了下,這個判斷下寫的是顯示【手機號已經綁定】的提示信息,並且隱藏其他提示信息!!!這都是什麼鬼啊。不就是個flag么,至於寫的這麼「加密」么!!!

----------------實在是看不下去了,喝點水舒緩下心情

總結一下,無論定義方法還是變數,都有他具體的業務含義,不是說想怎麼定義就怎麼定義,而且大部分人都還是以英文或者英文縮寫來定義的居多,代碼的運行效率固然重要,但是,可讀性也不能差成這樣啊!!!

總之,為了自己,也為了他人,請務必要用和業務相關的英文或英文縮寫來定義變數。


var 身高 = 170;

var 體重 = 80;

if( 身高 &<180 || 體重 &>60){

alert ("you loser")

}

也沒什麼不好


來新公司做支付,資料庫有個欄位是存儲本次訂單價格的

你猜名字叫啥

ddje.......

不應該是ddjg嗎

老子看了半天不知道這是個啥玩意,連注釋都沒有

order_price 一眼就知道的欄位被你用成了恩尼格碼,

簡直TM6666


java還可以用漢字編程,反正代碼最後都需要編譯,只要保證語言標識符合規就行.

其實之前我做過對日外包,日本的軟體系統 類名就是用的日語羅馬音(拉丁字母拼寫日語),


一個單詞十多個字母呢.

養成好習慣,最好還是用英文,不會就查詞典,順便注釋一下,畢竟軟體工程講求的是團隊協作.


強迫症患者表示對命名有苛刻的要求。至少覺得這是對自己代碼負責的表現。


會找不到工作


推薦閱讀:

如果代碼按行付費,會有什麼好玩的事情發生?

TAG:編程 | 代碼 | 代碼風格 | 編程理論 |