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


这个库提供了一系列绘图相关的API. 后者是笔者将这些API封装成了中文之后的对应代码.
此文的大前提是, 对以中文为母语的开发者, 中文接口版本的代码更易理解.
API作为程序和程序之间交流的"语言", 在软件生态圈中的重要性不言而喻. 拥有一套设计良好, 易于理解的API是大多数流行框架和库共有的特征. 当然, 绝大多数的API都是英文的. 导致中文用户在学习和使用时就要更多地依赖文档和注释.
中文API的命名更能被中文用户接受. 它将直接降低使用者的学习门槛, 并降低维护成本. 当然, 第三方库对中文字符的支持问题仍然会对这一实践造成麻烦, 但个人认为在实践中解决这些麻烦是降低软件开发成本付出的代价, 而且解决的越早, 后人越能乘凉.
现状是, 即使一些国人主创, 且几乎完全面向国内用户的框架, 也没有中文的API. 这里绝无指摘之意, 因为冰冻三尺非一日之寒, 更何况这些框架问世之时中文字符的支持程度也远不如今日.
以在下浅见, 开发中文API的途径包括:
- 用中文封装现有的英文API
- 在设计时就首选中文API
如果能够做到在内部代码和API都使用中文命名, 当然是最理想的, 但个人认为API的命名是更关键的一部分. 中文的命名规范几乎是空白, 这需要实践和集体智慧来填补.
封装现有的英文API也许比较有争议. 常见的一种观点是"XX语言的核心库, 先汉化给我看看". 这是一个寻找切入点的问题. 一个主流编程语言的核心库, 往往经历十数年甚至更长时间的积累, 接口不下万个. 而一些特定领域的库的API, 接口不过数十个. 领域受众也是很重要的因素. 有兴趣的请在跨界: 哪些中文非IT领域会偏好中文API, 编程/脚本语言?一起探讨.
2017-10-29 用中文命名API的意义和途径的更多相关文章
- 2017.10.29 C/C++/C#程序如何打成DLL动态库
C/C++程序如何打成DLL动态库: **1.在VS中新建main.h,添加如下内容:** extern "C" _declspec(dllexport) int onLoad() ...
- 2017/10 冲刺NOIP集训记录:暁の水平线に胜利を刻むのです!
前几次集训都没有记录每天的点滴……感觉缺失了很多反思的机会. 这次就从今天开始吧!不能懈怠,稳步前进! 2017/10/1 今天上午进行了集训的第一次考试…… 但是这次考试似乎是近几次我考得最渣的一次 ...
- 第17次Scrum会议(10/29)【欢迎来怼】
一.小组信息 队名:欢迎来怼小组成员队长:田继平成员:李圆圆,葛美义,王伟东,姜珊,邵朔,冉华 小组照片 二.开会信息 时间:2017/10/29 17:20~17:42,总计22min.地点:东北师 ...
- 中文命名之Hibernate+MySQL演示
最近有个契机, 需要在一个给定开发环境中验证中文命名的可行性. 达成的例子源码在: HibernateExampleZh 当前用的是Hibernate 3.3.2.GA. 之后测试了更多版本, 彩蛋见 ...
- 2018-07-30 对DLL库中的接口进行中文命名
补注: 此文是在探究在Windows上编写DLL时不能使用中文命名 · Issue #74 · program-in-chinese/overview问题时编写的演示用代码, 代码基于官方文档. 正如 ...
- (转载)中文Appium API 文档
该文档是Testerhome官方翻译的源地址:https://github.com/appium/appium/tree/master/docs/cn官方网站上的:http://appium.io/s ...
- Adobe Audition CC 2017 (10.0)安装教程
Adobe Audition CC 2017 (10.0)安装教程 注:下载地址在文章末尾 第一步:首先请将电脑的网络断开,很简单:禁用本地连接或者拔掉网线,这样就可以免除登录Creative Clo ...
- 中文Appium API 文档
该文档是Testerhome官方翻译的源地址:https://github.com/appium/appium/tree/master/docs/cn官方网站上的:http://appium.io/s ...
- 基于BERT预训练的中文命名实体识别TensorFlow实现
BERT-BiLSMT-CRF-NERTensorflow solution of NER task Using BiLSTM-CRF model with Google BERT Fine-tuni ...
随机推荐
- [UWP]使用Picker实现一个简单的ColorPicker弹窗
在上一篇博文<[UWP]使用Popup构建UWP Picker>中我们简单讲述了一下使用Popup构建适用于MVVM框架下的弹窗层组件Picker的过程.但是没有应用实例的话可能体现不出P ...
- string Type
Notes from C++ Primer Operations Operations of string support lots of operations of sequential conta ...
- 第六篇: 分布式配置中心(Spring Cloud Config)
一.简介 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件. 在Spring Cloud中,有分布式配置中心组件spring cloud confi ...
- MessageBeep - Play a System sound
There is a interesting function which can play a System sound. First let's see the WinAPI. //声明: Mes ...
- javascript 异步解析
js 异步解析 一 .js单线程分析 我们都知道js的一大特点是单线程,也就是同一时间点,只能处理一件事,一句js代码.那为什么js要设计成单线程而不是多线程呢?这主要和js的用途有关,js作为浏览器 ...
- [转]KMP算法理解及java实现
这大概是我看的最好懂的KMP算法讲解了,不过我还只弄懂了大概思想,算法实现我到时候用java实现一遍 出处:知乎 https://www.zhihu.com/question/21923021/ans ...
- [EXP]Microsoft Windows 10 - XmlDocument Insecure Sharing Privilege Escalation
Windows: XmlDocument Insecure Sharing Elevation of Privilege Platform: Windows (almost certainly ear ...
- [COI2007] Sabor
下面给出这道一脸不可做的题的鬼畜性质: 1)对于一个点来说,其归属状态是确定的:走不到.A党或B党 .(黑白格染色) 方便起见,将包含所有不可达的点的极小矩形向外扩展一圈,设为矩形M. 2)矩形M的最 ...
- Python:SQLMap源码精读—基于错误的盲注(error-based blind)
目标网址 http://127.0.0.1/shentou/sqli-labs-master/Less-5/?id=1 Payload的生成 <test> <title>MyS ...
- Spring Session - 使用Redis存储HttpSession例子
目的 使用Redis存储管理HttpSession: 添加pom.xml 该工程基于Spring Boot,同时我们将使用Spring IO Platform来维护依赖版本号: 引入的依赖有sprin ...