"中文编程"知乎专栏原链

在前文对在代码中使用中文命名的质疑与回应中阐述了在代码中使用中文命名的益处. 此文将从软件使用者的角度阐述对API中文化的意义并探讨实现途径. 当然, 文中面向的用户是以中文为母语的开发者.

首先请看一个实例, 演示效果在:

这个库提供了一系列绘图相关的API. 后者是笔者将这些API封装成了中文之后的对应代码.

此文的大前提是, 对以中文为母语的开发者, 中文接口版本的代码更易理解.

API作为程序和程序之间交流的"语言", 在软件生态圈中的重要性不言而喻. 拥有一套设计良好, 易于理解的API是大多数流行框架和库共有的特征. 当然, 绝大多数的API都是英文的. 导致中文用户在学习和使用时就要更多地依赖文档和注释.

中文API的命名更能被中文用户接受. 它将直接降低使用者的学习门槛, 并降低维护成本. 当然, 第三方库对中文字符的支持问题仍然会对这一实践造成麻烦, 但个人认为在实践中解决这些麻烦是降低软件开发成本付出的代价, 而且解决的越早, 后人越能乘凉.

现状是, 即使一些国人主创, 且几乎完全面向国内用户的框架, 也没有中文的API. 这里绝无指摘之意, 因为冰冻三尺非一日之寒, 更何况这些框架问世之时中文字符的支持程度也远不如今日.

以在下浅见, 开发中文API的途径包括:

  • 用中文封装现有的英文API
  • 在设计时就首选中文API

如果能够做到在内部代码和API都使用中文命名, 当然是最理想的, 但个人认为API的命名是更关键的一部分. 中文的命名规范几乎是空白, 这需要实践和集体智慧来填补.

封装现有的英文API也许比较有争议. 常见的一种观点是"XX语言的核心库, 先汉化给我看看". 这是一个寻找切入点的问题. 一个主流编程语言的核心库, 往往经历十数年甚至更长时间的积累, 接口不下万个. 而一些特定领域的库的API, 接口不过数十个. 领域受众也是很重要的因素. 有兴趣的请在跨界: 哪些中文非IT领域会偏好中文API, 编程/脚本语言?一起探讨.

2017-10-29 用中文命名API的意义和途径的更多相关文章

  1. 2017.10.29 C/C++/C#程序如何打成DLL动态库

    C/C++程序如何打成DLL动态库: **1.在VS中新建main.h,添加如下内容:** extern "C" _declspec(dllexport) int onLoad() ...

  2. 2017/10 冲刺NOIP集训记录:暁の水平线に胜利を刻むのです!

    前几次集训都没有记录每天的点滴……感觉缺失了很多反思的机会. 这次就从今天开始吧!不能懈怠,稳步前进! 2017/10/1 今天上午进行了集训的第一次考试…… 但是这次考试似乎是近几次我考得最渣的一次 ...

  3. 第17次Scrum会议(10/29)【欢迎来怼】

    一.小组信息 队名:欢迎来怼小组成员队长:田继平成员:李圆圆,葛美义,王伟东,姜珊,邵朔,冉华 小组照片 二.开会信息 时间:2017/10/29 17:20~17:42,总计22min.地点:东北师 ...

  4. 中文命名之Hibernate+MySQL演示

    最近有个契机, 需要在一个给定开发环境中验证中文命名的可行性. 达成的例子源码在: HibernateExampleZh 当前用的是Hibernate 3.3.2.GA. 之后测试了更多版本, 彩蛋见 ...

  5. 2018-07-30 对DLL库中的接口进行中文命名

    补注: 此文是在探究在Windows上编写DLL时不能使用中文命名 · Issue #74 · program-in-chinese/overview问题时编写的演示用代码, 代码基于官方文档. 正如 ...

  6. (转载)中文Appium API 文档

    该文档是Testerhome官方翻译的源地址:https://github.com/appium/appium/tree/master/docs/cn官方网站上的:http://appium.io/s ...

  7. Adobe Audition CC 2017 (10.0)安装教程

    Adobe Audition CC 2017 (10.0)安装教程 注:下载地址在文章末尾 第一步:首先请将电脑的网络断开,很简单:禁用本地连接或者拔掉网线,这样就可以免除登录Creative Clo ...

  8. 中文Appium API 文档

    该文档是Testerhome官方翻译的源地址:https://github.com/appium/appium/tree/master/docs/cn官方网站上的:http://appium.io/s ...

  9. 基于BERT预训练的中文命名实体识别TensorFlow实现

    BERT-BiLSMT-CRF-NERTensorflow solution of NER task Using BiLSTM-CRF model with Google BERT Fine-tuni ...

随机推荐

  1. nginx并发模型与traffic_server并发模型简单比较

    ginx并发模型: nginx 的进程模型采用的是prefork方式,预先分配的worker子进程数量由配置文件指定,默认为1,不超过1024.master主进程创建监听套接口,fork子进程以后,由 ...

  2. Apktool下载与安装 windows环境

    Apktool 下载与安装 百度网盘地址:https://pan.baidu.com/s/1slQBMOl  (apktool 2.2.4版本) 更多版本可以从官网https://ibotpeache ...

  3. ZKWeb网页框架1.9正式发布

    1.9.0更新的内容有 更新项目工具 更好的支持Linux 添加工具函数 Exception.ToDetailedString (获取例外的详细信息) Exception.ToSummaryStrin ...

  4. redis 分布式读写锁

    http://zhangtielei.com/posts/blog-redlock-reasoning.html 链接里这篇 blog 讨论了 redis 分布式锁的实现以及安全性 我要参考 基于单R ...

  5. Spring AOP术语:连接点和切点的区别。

    定义: 1.连接点(Join point):连接点是在应用执行过程中能够插入切面(Aspect)的一个点.这些点可以是调用方法时.甚至修改一个字段时. 2.切点(Pointcut):切点是指通知(Ad ...

  6. 微信小程序 web-view 的 url 带参问题

    在微信小程序开发过程中,会需要跳转到外部链接,微信提供了 <web-view>组件供我们使用. 为减少重复代码,一般会将这个功能单独抽取为一个页面供大家使用: <template&g ...

  7. Typescript 学习笔记四:回忆ES5 中的类

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  8. JAVA中的COPYONWRITE容器

    Copy-On-Write简称COW,是一种用于程序设计中的优化策略.其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改, ...

  9. shell之实战应用一(查找xml文档中的关键字段)

      前几天同事问我一个问题,说如下的文档中,如何把name后面的字段(红色框中的字段)单独打印出来?

  10. [每天解决一问题系列 - 0007] 如何创建Catalog并用其签名

    问题描述: 校验一组文件的完整性 解决方法: https://msdn.microsoft.com/en-us/library/windows/desktop/aa386967(v=vs.85).as ...