在国内原创开源项目中使用中文命名的意义与方式
注: 个人支持踊跃参与国外开源项目. 此文面向读者仅为母语是中文的并有意原创开源项目的开发者.
源自在代码中推广中文命名对中国开源软件的意义 - V2EX. 中文命名的技术优势在对在代码中使用中文命名的质疑与回应"没有好处"已明, 对于原创者本身来说, 使用中文命名可以让代码可读性更高, 维护成本更低. 此文更侧重开发者参与度和推广方面.
类似功能的两个库, 一个提供中文API, 一个提供英文API, 个人相信对国内用户来说前者的接受度会更高. 因此无论代码命名选择的是英文或中文, 基于已有英文API额外提供一套同样功能的中文API对国内推广有益无害, 而维护这套API的投入相对较小. 用户群越大, 潜在的参与开发者也会越多. 这对于独立开源项目(非商业公司支持的)来说尤为重要, 直接决定项目的可持续性.
之前在 v2 碰到一个小程序开发请求帖(结贴), 之后催生了五笔编码编辑器这个微型开源项目. 项目开始时, 请求者并无编程经验, 在原型搭建时, 我提到会使用中文命名, 之后的维护希望由他多出力, 感觉那时他的动力并不大. 但最后实现基本功能后, 他提交了之后的一系列改进 PR 及相关测试, 基本上我除了合并和审核之外没有投入其他精力.
可见中文命名对于鼓励非专业程序员参与开源项目的作用. 开源项目的基本架构搭建之后, 如果项目本身使用的是中文命名, 用户(往往是非专业开发者)应该会更有动力去学习代码. 并不是说英文命名肯定会阻止参与, 但肯定会让很大一部分非专业程序员望而却步. 而且开源项目很大一部分工作量就在于后期维护, 界面改进, 相似功能的堆积, 以及相关测试. 这部分本可以由原作者之外的参与者(用户)来实现, 原作者就可以专心投入到架构/大功能的优化改进上. 久而久之, 新手也会逐渐成为核心贡献者.
对此最常见的一个问题是, "用中文命名之后, 国外开发者如何参与"? 前文对在代码中使用中文命名的质疑与回应的"不利于非中文编程者贡献"以及阐述过. 这里补充一些.
国内开源项目大概分类如下:
- 针对用户群较小, 或者用户群限于国内(如与中文处理相关的工具), 自然维护的也是国内开发者. 对这些项目, 不会中文的国外开发者几乎不会使用, 更不用说合作.
- 针对用户群很广并且国际化, 但已有类似功能的国外开源项目. 大多数国外开发者一般首选那些代码可读性更好也更成熟的项目. 在代码质量和整体功能没有级别差距的情况下, 代码可读性决定了开发者更偏好哪个项目, 而国人的代码在国外开发者看来, 可读性很难超过母语是英文的开发者编写的代码.
- 功能非常独特并且用户群很国际化, 而且还未有国外类似功能的开源项目 -- 暂时还没看到这样的项目, 欢迎指点.
中文命名最适用的是第一类, 因为无论用户还是开发者都会限于国内. 这类从数量上应该占到国内开源项目的绝大部分.
至于第二类, 项目开始时决定采用中文还是英文命名取决于原创者对国内外开发者参与度的判断. 如果认为在很长时间内国外用户会很少, 可以采用首先在代码中使用中文命名但提供额外的英文API的方式, 再根据国外用户参与开发的倾向性和项目本身的需要进行调整, 当然如果国内开发者的参与已经足够项目持续, 就不需再改用英文命名.
2018-12-22
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
5月8日云栖精选夜读 | 现代IM系统中的消息系统架构 - 模型篇
点击订阅云栖夜读日刊,专业的技术干货,不容错过! 阿里专家原创好文 1.现代IM系统中的消息系统架构 - 模型篇 在架构篇中我们介绍了现代IM消息系统的架构,介绍了Timeline的抽象模型以及基于Timeline模型构建的一个支持『消息漫游』、『多端同步』和『消息检索』多种高级功能的消息系统的典型架构。本文会对Tablestore的Timeline模型做一个非常详尽的解读,让读者能够深入到实现层面了解Timeline的基本功能以及核心组件。最后我们还是会基于IM消息系统这个场景,来看如何基于Tablestore Timeline实现IM场景下消息同步、存储和索引等基本功能。阅读更多》》 2.为什么强烈禁止开发人员使用isSuccess作为变量名 在日常开发中,我们会经常要在类中定义布尔类型的变量,比如在给外部系统提供一个RPC接口的时候,我们一般会定义一个字段表示本次请求是否成功的。 关于这个"本次请求是否成功"的字段的定义,其实是有很多种讲究和坑的,稍有不慎就会掉入坑里,作者在很久之前就遇到过类似的问题,本文就来围绕这个简单分析一下。阅读更多》》 3.Discord 公司如何使用 ...
- 下一篇
java版电子商务spring cloud分布式微服务-hystrix工作原理
Netflix的 Hystrix 是一个帮助解决分布式系统交互时超时处理和容错的类库, 它同样拥有保护系统的能力. Hystrix的设计原则包括:资源隔离、熔断器、命令模式。 下面的流程图展示了当使用Hystrix的依赖请求,Hystrix是如何工作的。 Hystrix主要有4种调用方式: toObservable() 方法 :未做订阅,只是返回一个Observable 。 observe() 方法 :调用 #toObservable() 方法,并向 Observable 注册 rx.subjects.ReplaySubject 发起订阅。 queue() 方法 :调用 #toObservable() 方法的基础上,调用:Observable#toBlocking() 和 BlockingObservable#toFuture() 返回 Future 对象 execute() 方法 :调用 #queue() 方法的基础上,调用 Future#get() 方法,同步返回 #run() 的执行结果。 主要的执行逻辑: 1.每次调用创建一个新的HystrixCommand,把依赖调用封装在r...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2全家桶,快速入门学习开发网站教程
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Red5直播服务器,属于Java语言的直播服务器
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程