diff --git "a/\347\254\254\344\270\200\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\346\234\211\345\205\263\345\274\200\346\272\220\347\232\204\345\270\270\350\247\201\350\257\257\345\214\272.md" "b/\347\254\254\344\270\200\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\346\234\211\345\205\263\345\274\200\346\272\220\347\232\204\345\270\270\350\247\201\350\257\257\345\214\272.md" index 2b7336ad24a559d7d8021f424ecab8300382d85e..e6fc83b471f66380bf33a8afc62cd58ec3a71b95 100644 --- "a/\347\254\254\344\270\200\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\346\234\211\345\205\263\345\274\200\346\272\220\347\232\204\345\270\270\350\247\201\350\257\257\345\214\272.md" +++ "b/\347\254\254\344\270\200\351\203\250\345\210\206\342\200\224\342\200\224\345\210\235\350\257\206\345\274\200\346\272\220/\346\234\211\345\205\263\345\274\200\346\272\220\347\232\204\345\270\270\350\247\201\350\257\257\345\214\272.md" @@ -19,12 +19,6 @@ GPL、MIT、BSD 等比较流行的开源协议允许使用者修改源代码, ### 开源项目必须用英文命名标识符吗? - -``` -开源的误区有很多,而不应该把大量篇幅放在标识符命名这种细致末节问题上。 -``` - - 虽然很多开发者早已知道多数常用编程语言支持中文命名标识符并付诸实践,但仍然常见“如果项目开源的话还是要用英文命名”的说法。2007 年 Python3 决定支持非 ASCII 码标识符的[增强建议书](https://www.python.org/dev/peps/pep-3131/)中指出: > A developer wishing to make a library widely available needs to make a number of explicit choices (such as publication, licensing, language of documentation, and language of identifiers). It should always be the choice of the author to make these decisions - not the choice of the language designers. @@ -39,6 +33,12 @@ GPL、MIT、BSD 等比较流行的开源协议允许使用者修改源代码, 下面是一些常见的疑虑: +- 这种细枝末节的问题值得大书特书吗? + + 代码可读性是代码质量的重要部分。大公司早已将代码可读性审核(Readability Review)作为代码审核中的把关一步,如谷歌已进行了十多年。公司可以承担开发者互相审核这一额外开销,而开源项目作者大多没有这个条件。往往勉强用第二语言命名标识符的后果就是代码可读性欠佳。开源项目本身特别强调合作,代码难以阅读的直接后果是提高了其他开发者参与项目的门槛,也使开源的意义大打折扣。 + + 在中文开发者社区,母语命名标识符在代码可读性方面的优势鲜有讨论。其他非英语母语国家如日本早在几十年前就对此进行了学术研究,见《[1992 年日本对母语编程的可读性比较实验](https://zhuanlan.zhihu.com/p/56756996)》。因而特此阐明中文命名的意义和可行性,希望更多开发者通过实践体验益处。 + - 用中文命名出了问题怎么办? 像任何技术一样,在使用推广中必然有各种问题出现。如果是编程语言或是开源框架对中文命名的支持问题,可以向它们的开发组反映,往往能得到解决,先例有 [Vue.js](https://github.com/vuejs/vue/issues/6971)、[Hibernate](https://hibernate.atlassian.net/browse/HHH-13383)、[pip](https://github.com/pypa/pip/issues/8342) 等等。另外,也可在开源中国社区求助,协力解决。毕竟,「走的人多了,也便成了路」。