在國內原創開源項目中使用中文命名的意義與方式

注: 個人支持踊躍參與國外開源項目. 此文面向讀者僅爲母語是中文的並有意原創開源項目的開發者.

源自在代碼中推廣中文命名對中國開源軟件的意義 - V2EX. 中文命名的技術優勢在對在代碼中使用中文命名的質疑與迴應"沒有好處"已明, 對於原創者本身來說, 使用中文命名可以讓代碼可讀性更高, 維護成本更低. 此文更側重開發者參與度和推廣方面.

類似功能的兩個庫, 一個提供中文API, 一個提供英文API, 個人相信對國內用戶來說前者的接受度會更高. 因此無論代碼命名選擇的是英文或中文, 基於已有英文API額外提供一套同樣功能的中文API對國內推廣有益無害, 而維護這套API的投入相對較小. 用戶羣越大, 潛在的參與開發者也會越多. 這對於獨立開源項目(非商業公司支持的)來說尤爲重要, 直接決定項目的可持續性.

之前在 v2 碰到一個小程序開發請求帖(結貼), 之後催生了五筆編碼編輯器這個微型開源項目. 項目開始時, 請求者並無編程經驗, 在原型搭建時, 我提到會使用中文命名, 之後的維護希望由他多出力, 感覺那時他的動力並不大. 但最後實現基本功能後, 他提交了之後的一系列改進 PR 及相關測試, 基本上我除了合併和審覈之外沒有投入其他精力.

可見中文命名對於鼓勵非專業程序員參與開源項目的作用. 開源項目的基本架構搭建之後, 如果項目本身使用的是中文命名, 用戶(往往是非專業開發者)應該會更有動力去學習代碼. 並不是說英文命名肯定會阻止參與, 但肯定會讓很大一部分非專業程序員望而卻步. 而且開源項目很大一部分工作量就在於後期維護, 界面改進, 相似功能的堆積, 以及相關測試. 這部分本可以由原作者之外的參與者(用戶)來實現, 原作者就可以專心投入到架構/大功能的優化改進上. 久而久之, 新手也會逐漸成爲核心貢獻者.

對此最常見的一個問題是, "用中文命名之後, 國外開發者如何參與"? 前文對在代碼中使用中文命名的質疑與迴應的"不利於非中文編程者貢獻"以及闡述過. 這裏補充一些.
國內開源項目大概分類如下:

  • 針對用戶羣較小, 或者用戶羣限於國內(如與中文處理相關的工具), 自然維護的也是國內開發者. 對這些項目, 不會中文的國外開發者幾乎不會使用, 更不用說合作.
  • 針對用戶羣很廣並且國際化, 但已有類似功能的國外開源項目. 大多數國外開發者一般首選那些代碼可讀性更好也更成熟的項目. 在代碼質量和整體功能沒有級別差距的情況下, 代碼可讀性決定了開發者更偏好哪個項目, 而國人的代碼在國外開發者看來, 可讀性很難超過母語是英文的開發者編寫的代碼.
  • 功能非常獨特並且用戶羣很國際化, 而且還未有國外類似功能的開源項目 -- 暫時還沒看到這樣的項目, 歡迎指點.

中文命名最適用的是第一類, 因爲無論用戶還是開發者都會限於國內. 這類從數量上應該佔到國內開源項目的絕大部分.

至於第二類, 項目開始時決定採用中文還是英文命名取決於原創者對國內外開發者參與度的判斷. 如果認爲在很長時間內國外用戶會很少, 可以採用首先在代碼中使用中文命名但提供額外的英文API的方式, 再根據國外用戶參與開發的傾向性和項目本身的需要進行調整, 當然如果國內開發者的參與已經足夠項目持續, 就不需再改用英文命名.

2018-12-22

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章