在国内原创开源项目中使用中文命名的意义与方式

简介: 在国内原创开源项目中用中文命名带来的好处, 以及几种方式.

注: 个人支持踊跃参与国外开源项目. 此文面向读者仅为母语是中文的并有意原创开源项目的开发者.

源自在代码中推广中文命名对中国开源软件的意义 - V2EX. 中文命名的技术优势在对在代码中使用中文命名的质疑与回应"没有好处"已明, 对于原创者本身来说, 使用中文命名可以让代码可读性更高, 维护成本更低. 此文更侧重开发者参与度和推广方面.

类似功能的两个库, 一个提供中文API, 一个提供英文API, 个人相信对国内用户来说前者的接受度会更高. 因此无论代码命名选择的是英文或中文, 基于已有英文API额外提供一套同样功能的中文API对国内推广有益无害, 而维护这套API的投入相对较小. 用户群越大, 潜在的参与开发者也会越多. 这对于独立开源项目(非商业公司支持的)来说尤为重要, 直接决定项目的可持续性.

之前在 v2 碰到一个小程序开发请求帖(结贴), 之后催生了五笔编码编辑器这个微型开源项目. 项目开始时, 请求者并无编程经验, 在原型搭建时, 我提到会使用中文命名, 之后的维护希望由他多出力, 感觉那时他的动力并不大. 但最后实现基本功能后, 他提交了之后的一系列改进 PR 及相关测试, 基本上我除了合并和审核之外没有投入其他精力.

可见中文命名对于鼓励非专业程序员参与开源项目的作用. 开源项目的基本架构搭建之后, 如果项目本身使用的是中文命名, 用户(往往是非专业开发者)应该会更有动力去学习代码. 并不是说英文命名肯定会阻止参与, 但肯定会让很大一部分非专业程序员望而却步. 而且开源项目很大一部分工作量就在于后期维护, 界面改进, 相似功能的堆积, 以及相关测试. 这部分本可以由原作者之外的参与者(用户)来实现, 原作者就可以专心投入到架构/大功能的优化改进上. 久而久之, 新手也会逐渐成为核心贡献者.

对此最常见的一个问题是, "用中文命名之后, 国外开发者如何参与"? 前文对在代码中使用中文命名的质疑与回应的"不利于非中文编程者贡献"以及阐述过. 这里补充一些.
国内开源项目大概分类如下:

  • 针对用户群较小, 或者用户群限于国内(如与中文处理相关的工具), 自然维护的也是国内开发者. 对这些项目, 不会中文的国外开发者几乎不会使用, 更不用说合作.
  • 针对用户群很广并且国际化, 但已有类似功能的国外开源项目. 大多数国外开发者一般首选那些代码可读性更好也更成熟的项目. 在代码质量和整体功能没有级别差距的情况下, 代码可读性决定了开发者更偏好哪个项目, 而国人的代码在国外开发者看来, 可读性很难超过母语是英文的开发者编写的代码.
  • 功能非常独特并且用户群很国际化, 而且还未有国外类似功能的开源项目 -- 暂时还没看到这样的项目, 欢迎指点.

中文命名最适用的是第一类, 因为无论用户还是开发者都会限于国内. 这类从数量上应该占到国内开源项目的绝大部分.

至于第二类, 项目开始时决定采用中文还是英文命名取决于原创者对国内外开发者参与度的判断. 如果认为在很长时间内国外用户会很少, 可以采用首先在代码中使用中文命名但提供额外的英文API的方式, 再根据国外用户参与开发的倾向性和项目本身的需要进行调整, 当然如果国内开发者的参与已经足够项目持续, 就不需再改用英文命名.

2018-12-22

相关文章
|
11月前
|
消息中间件 数据库
开发指南062-异步处理接口
后台有些接口耗时非常长,如果采用同步处理机制,前台等待时间过长,这时需要改异步操作
|
SQL 机器学习/深度学习 存储
七大经典技术场景!Apache Flink 在多维领域应用的 40+ 实践案例
随着 Apache Flink 自身的发展,越来越多的企业选择 Apache Flink 应用于自身的业务场景,如底层平台建设、实时数仓、实时推荐、实时分析、实时大屏、风控、数据湖等场景中,解决实时计算的需求。
七大经典技术场景!Apache Flink 在多维领域应用的 40+ 实践案例
|
存储 Kubernetes 数据安全/隐私保护
k8s学习-Secret(创建、使用、更新、删除等)
k8s学习-Secret(创建、使用、更新、删除等)
1105 0
|
存储 监控 安全
TG7100CWiFi&BLE双模芯片 一键连接AIoT平台让你快速自定义智能方案
面对市面上眼花缭乱的双模芯片,许多应用方案商往往挑花了眼,不知道该选择哪款。今天我们推荐是天猫精灵联合平头哥推出的TG7100CWiFi&BLE双模芯片。它具有低功耗、宽工作温度等特点,广泛适用于智能家居,电工照明等领域。
TG7100CWiFi&BLE双模芯片 一键连接AIoT平台让你快速自定义智能方案
|
11月前
|
数据采集 监控 数据可视化
用Python构建动态折线图:实时展示爬取数据的指南
本文介绍了如何利用Python的爬虫技术从“财富吧”获取中国股市的实时数据,并使用动态折线图展示股价变化。文章详细讲解了如何通过设置代理IP和请求头来绕过反爬机制,确保数据稳定获取。通过示例代码展示了如何使用`requests`和`matplotlib`库实现这一过程,最终生成每秒自动更新的动态股价图。这种方法不仅适用于股市分析,还可广泛应用于其他需要实时监控的数据源,帮助用户快速做出决策。
519 0
|
11月前
|
运维 供应链 安全
SD-WAN分布式组网:构建高效、灵活的企业网络架构
本文介绍了SD-WAN(软件定义广域网)在企业分布式组网中的应用,强调其智能化流量管理、简化的网络部署、弹性扩展能力和增强的安全性等核心优势,以及在跨国企业、多云环境、零售连锁和制造业中的典型应用场景。通过合理设计网络架构、选择合适的网络连接类型、优化应用流量优先级和定期评估网络性能等最佳实践,SD-WAN助力企业实现高效、稳定的业务连接,加速数字化转型。
SD-WAN分布式组网:构建高效、灵活的企业网络架构
|
人工智能 机器人 API
ChatGPT4.0直接出图功能上线!神奇一键画,新手小白也能绘画(chatgpt4.0直接出圖)
ChatGPT4.0直接出图功能上线!神奇一键画,新手小白也能绘画(chatgpt4.0直接出圖)
1013 2
|
运维 监控 安全
多云环境下的Docker部署策略
随着云计算的快速发展,多云环境(Multi-Cloud Environment)已经成为了现代应用部署的一种重要选择。在这种环境下,企业可以利用多个云服务提供商的资源来提高可用性、灵活性和容错性。Docker容器技术在多云环境中的应用变得越来越普遍,本文将探讨多云环境下的Docker部署策略,并提供丰富的示例代码,以帮助大家更好地管理和运维容器化应用。
|
Prometheus 监控 Cloud Native
微服务的监控与可观测性
【8月更文第29天】在微服务架构中,确保每个服务的健康状态和性能表现是非常重要的。为了达到这一目标,我们需要实施一套完整的监控和可观测性方案。本篇文章将介绍如何通过日志、指标和追踪来监测微服务的状态和性能,并提供相应的代码示例。
937 1
|
监控 API 开发工具
邮件中继中转邮箱API发送邮件的方法和步骤
AokSend介绍了使用邮件中继中转邮箱API发送邮件的步骤:理解API概念,获取API密钥,设置发件人和收件人信息,构建并发送API请求,处理响应,监控调试,及完善邮件功能。该服务支持大量验证码发送、触发式接口和高触达SMTP/API接口。选择合适提供商并参考文档可优化邮件发送。