13年后的共鸣-在代码中用中文命名的优势和问题

简介: 与13年前的博文有同感, 分析在代码中用中文命名的优势和问题. Echoing a blog article 13 years ago, with the topic of pro and cons of Chinese naming in code.

早在2004年的《关于中文编程》 - 张玮的专栏 一文中非常有前瞻性地阐述了用中文编写代码对改善可读性的意义, 今日代码可读性已经越来越被业界重视而成为代码审核的一部分.

文中提到的几个论点尤其有共鸣:

我经常见到为取变量名和类名查字典的情况,这还算是好的。有时候遇到不好查字典或者理解不准确甚至是心情不好,乱起一个名字,就会搞得后来读程序头痛。“道可道,非常道;名可名,非常名”。《道德经》把名放在开篇中,可见一个好的名字的重要性。我觉得名字就代表对事物本质的认识,再加上软件这样一个东西,其中的大部分事物几乎都是创造出来的,如果没有一个好的名字,就会让人很难以理解。我觉得名字差有三方面的原因:

1、名字代表程序员对事物本质的认识,一个坏的名字可能意味着概念的模糊。有可能是程序员对事物的划分不准确,这些东西在一起只是偶然的,从而取不出好的名字,因为这个事物的边界是模糊的;也有可能开始的时候是准确的,但后来随着事物的发展,这个东西的性质已经改变,原来的名字已经反映不出它的本质了。这个时候就需要改一个更准确的名字,但由于没有方法论和工具的保证,这种变动往往不太容易,因此很多人不会愿意做这种变化。...

2、认为名字不重要,这个上面我已经谈到。

3、认识也是准确的,也想取一个好名字,但是因为语言的限制,取不了好名字。

这个正是我想说的问题。因此我们就要在源代码中使用中文。那有的人说,现在的语言大多支持中文的注释,用中文注释不就OK了吗?关于这个观点,请参见Refactoring中的论述,总之,结论是,做为向高级语言进化的第一步,汇编语言中出现的关于变量名,方法名等等,正是自然的表达人的思想的地方,从这个角度上来看,注释倒反是副产品,也就是说,在用变量名,方法名,类名等等不能表达的时候,在用Refactoring不能解决问题的时候,才用注释来解决。

文中提到的问题在13年后的今天也还没有完全的解决:

最现实的一个问题是:环境的支持。最基本的是运行环境和编译环境,我大部分时间都生活在Java环境中,很少数情况会有不支持的情况,我记得遇到过的不支持的情况好象是WebLogic不支持有中文方法名的EJB。总之,这方面的不支持是比较少的。IDE的支持一般也是可以的,但是对输入的支持一般都不好。比如有一个中文方法名,如果要想在弹出的选单中选中文方法名,都是很痛苦的。我能想到的比较好的方法应该是象E语言一样:象输入"中文",只需要输入"zhongwen"或"zw",或"zhw"即可。但现在几乎所有的开发工具都不支持,我想有一天这种输入方法应该是会被支持的。

两个问题都是生态环境对中文(或者说非英文)的支持, 这需要更多在源码/文件名中使用中文来推动解决.

关于中文输入法, 理想的解决方式是支持多种输入法(不仅是拼音), 而且与IDE原有的代码自动补全功能无缝集成. 通过插件在主流IDE中实现这一功能。 最近发现了一个开源实现,在TypeScript+VSCode中实现了根据拼音首字母或者拼音的部分来匹配中文标识符。虽然随着VSCode的新版本发布而失效,反映了IDE插件对IDE的依赖性问题,但仍证实了可行性,有不少借鉴意义。

2017-10-26

相关文章
|
2月前
|
人工智能 PHP 开发工具
用 Laravel AI SDK 构建多智能体工作流
Laravel AI SDK 提供轻量、灵活的多智能体工作流实现方案,支持 Prompt Chaining、Routing、Parallelization、Orchestrator-Workers 和 Evaluator-Optimizer 五种经生产验证的模式,一行 `agent()` 即可启动,Pipeline/Concurrency 等 API 让复杂任务模块化、可编排。(239字)
197 7
|
2月前
|
人工智能 自然语言处理 大数据
2026年1688开店真能赚到钱吗?最新投入产出全解析,AI红利期已至!
2026年1688全面AI化,开店年费9988元起(诚信通AI版),升级选项达3.68万–10.68万元/年;另需数字推广(约3万/年)及人力投入。平台推出“三保”服务(保5万访客、500询盘、300订单),未达标返6688元红包。AI正驱动决策、组织与竞争力三大位移,助力源头工厂智能升级。
|
2月前
|
SQL 人工智能 安全
从企业微信“养龙虾”说起:个人开发者的AI工具选型思考
“龙虾”(OpenClaw)是2026年爆火的开源AI智能体,主打“真能干活”,支持跨应用自动化操作;但其通用性带来稳定性与工程适配短板。相较之下,飞算JavaAI专业版聚焦IDE内垂直提效,提供高采纳率代码生成、老项目理解、安全修复等10大工具,9.9元/月起,更适配Java开发者真实生产力需求。(239字)
|
11月前
|
机器学习/深度学习 边缘计算 算法
NOMA和OFDMA优化算法分析
NOMA和OFDMA优化算法分析
515 127
|
异构计算 Windows
嵌入式硬件电路常用设计软件有哪些
嵌入式硬件电路常用设计软件各有其特点和优缺点。在选择软件时,用户应根据自己的实际需求、预算以及学习曲线等因素进行综合考虑。
666 7
|
JavaScript API 微服务
探索现代后端开发:关键技术和最佳实践
【10月更文挑战第6天】探索现代后端开发:关键技术和最佳实践
|
人工智能 搜索推荐 数据安全/隐私保护
别错过!2024年苹果iPhone AI革命:揭秘技术突破与未来蓝图
本文首发于公众号“AntDream”。2024年,苹果iPhone在技术创新方面展现了一系列亮点,包括Apple Intelligence集成、Siri的进化、系统范围的写作工具、图像生成能力、跨应用任务处理、隐私保护加强等。iOS 18带来了多项改进,如屏幕图标重新设计、新增卫星短信等功能。后续规划包括Apple Intelligence的推广、与其他AI模型合作、硬件发展、软件生态扩展、全球多语言支持等。苹果将继续优化用户体验和强化隐私保护,探索AI技术在健康监测、增强现实等领域的应用,持续引领智能手机领域的创新潮流。
978 1
|
人工智能 IDE 测试技术
如何用好 AI 编码工具,让通义灵码帮你做更多工作
如何用好 AI 编码工具,让通义灵码帮你做更多工作
786 2
|
前端开发 数据管理 数据处理
Django的MTV
【8月更文挑战第13天】
436 4
|
JavaScript
一篇文章讲明白js鼠标侧键监听(也有左键,中键和右键)
一篇文章讲明白js鼠标侧键监听(也有左键,中键和右键)
745 0