在國內原創開源項目中使用中文命名標識符的意義與方式_風聞
吴烜-2020-08-27 07:41
中文命名的技術優勢在《對在代碼中使用中文命名的質疑與回應》一文的“沒有好處”一節已明,對於原創者本身來説,使用中文命名可以讓代碼可讀性更高,維護成本更低。此文更側重開發者參與度和推廣方面。
類似功能的兩個庫,一個提供中文 API,一個提供英文 API,個人相信對國內用户來説前者的接受度會更高。因此無論代碼命名選擇的是英文或中文,基於已有英文API額外提供一套同樣功能的中文API對國內推廣有益無害,而維護這套API的投入相對較小。用户羣越大,潛在的參與開發者也會越多。這對於獨立開源項目(非商業公司支持的)來説尤為重要,直接決定項目的可持續性。
之前在 v2ex 碰到一個小程序開發請求帖(結貼),之後催生了五筆編碼編輯器(github:program-in-chinese/wubi_code_editor)這個微型開源項目。

項目開始時,請求者並無編程經驗。在原型搭建時,我提到會使用中文命名,之後的維護希望由他多出力,感覺那時他的動力並不大。但最後實現基本功能後,他提交了之後的一系列改進 PR 及相關測試,基本上我除了合併和審核之外沒有投入其他精力。
可見中文命名對於鼓勵非專業程序員參與開源項目的作用
開源項目的基本架構搭建之後,如果項目本身使用的是中文命名,用户(往往是非專業開發者)應該會更有動力去學習代碼。並不是説英文命名肯定會阻止參與,但肯定會讓很大一部分非專業程序員望而卻步。
實際上開源項目很大一部分工作量在於後期維護,界面改進,相似功能的堆積,以及相關測試。這部分本可以由原作者之外的參與者(用户)來實現, 原作者就可以專心投入到架構/大功能的優化改進上。久而久之,新手也會逐漸成為核心貢獻者。
對此最常見的一個問題是,“用中文命名之後,國外開發者如何參與”?
國內開源項目大概分類如下:
1、針對用户羣較小,或者用户羣限於國內(如與中文處理相關的工具),自然維護的也是國內開發者。對這些項目,不會中文的國外開發者幾乎不會使用,更不用説合作。
2、針對用户羣很廣並且國際化,但已有類似功能的國外開源項目。大多數國外開發者一般首選那些代碼可讀性更好也更成熟的項目。在代碼質量和整體功能沒有級別差距的情況下,代碼可讀性決定了開發者更偏好哪個項目,而國人的代碼在國外開發者看來,可讀性很難超過母語是英文的開發者編寫的代碼。
3、功能非常獨特並且用户羣很國際化,而且還未有國外類似功能的開源項目(暫時還沒看到這樣的項目,歡迎指點)
中文命名最適用的是第一類,因為無論用户還是開發者都會限於國內。這類從數量上應該佔到國內開源項目的絕大部分。
至於第二類,項目開始時決定採用中文還是英文命名取決於原創者對國內外開發者參與度的判斷。如果認為在很長時間內國外用户會很少,可以採用首先在代碼中使用中文命名但提供額外的英文API的方式,再根據國外用户參與開發的傾向性和項目本身的需要進行調整,當然如果國內開發者的參與已經足夠項目持續,就不需再改用英文命名。