天天看點

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

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

源自

在代碼中推廣中文命名對中國開源軟體的意義 - V2EX

. 中文命名的技術優勢在對

在代碼中使用中文命名的質疑與回應

"沒有好處"已明, 對于原創者本身來說, 使用中文命名可以讓代碼可讀性更高, 維護成本更低. 此文更側重開發者參與度和推廣方面.

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

之前在 v2 碰到一個小程式開發請求帖(

結貼

), 之後催生了

五筆編碼編輯器

這個微型開源項目. 項目開始時, 請求者并無程式設計經驗, 在原型搭建時, 我提到會使用中文命名, 之後的維護希望由他多出力, 感覺那時他的動力并不大. 但最後實作基本功能後, 他送出了之後的一系列改進 PR 及相關測試, 基本上我除了合并和稽核之外沒有投入其他精力.

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

對此最常見的一個問題是, "用中文命名之後, 國外開發者如何參與"? 前文

對在代碼中使用中文命名的質疑與回應

的"不利于非中文程式設計者貢獻"以及闡述過. 這裡補充一些.

國内開源項目大概分類如下:

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

中文命名最适用的是第一類, 因為無論使用者還是開發者都會限于國内. 這類從數量上應該占到國内開源項目的絕大部分.

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

2018-12-22

繼續閱讀