有时候遇到业务强相关的变量,如果按照传统使用英文变量,一来要想翻译成地道的英文很困难,二来难以理解,不仅别人看代码时难以理解,如果这些变量太多的话,自己也难于记忆。
我看别人的代码,像英文命名不地道的、拼写错误的,更有甚者使用拼音命名的,这种恶心的事情简直不要太多。
于是我想,现在但凡主流的高级编程语言以及数据库,全都支持使用 Unicode 字符命名变量,遇到业务强相关的逻辑时,何不直接用中文?
当然,在写通用模块或库时,或者与业务联系不大的逻辑,当然还是应该用英文变量名。
如果是个人项目无所谓,适合自己的就是最好的。但是如果是公司团队,有没有团队在实际项目中使用中文命名?
![]() | 1 zhilincom 2020-06-26 01:56:45 +08:00 ![]() 还是用英文比较好吧,最好加上中文注释。一般行业术语 /专业术语都有对应的英文翻译,除非是自编自造且不流行的特定词汇,这种情况用中文一般人也很难理解好不。 |
![]() | 2 zhilincom 2020-06-26 01:58:11 +08:00 还有一个用中文做变量你不觉得切换输入法就很麻烦吗? |
![]() | 3 watzds 2020-06-26 01:59:45 +08:00 via Android 我用中文枚举 |
4 RicardoY 2020-06-26 02:28:16 +08:00 我感觉中文枚举比英文枚举清晰很多...但是 leader 好像不是很喜欢... |
5 darrenfang 2020-06-26 02:39:50 +08:00 ![]() 之前遇到一个枚举:一居室,二居室,三居室,四居室,联排别墅,独栋别墅... 果断用中文了 |
![]() | 6 Code418 2020-06-26 06:00:20 +08:00 虽然中文变量名我是反对的。 这确实是个很大而且很烦的议题。编码五分钟,命名一小时……有时候找对应通用翻译不是非常容易,尤其很多领域跟业务场景,其实内地的习惯跟全世界都不一样,只能勉强对应上去,事实上表意反而很不精确。而且常常也会导致命名太长的问题,生生当 java 写(咳) 前面提到的用中文枚举感觉虽然还是很难受,但感觉大家商量下,在必要的地方用,感觉还是勉强可以接受的,应该也可以解决掉大部分问题。但是如果是作为普通变量名或是其他 token 的话感觉就真的太难受了,这个完全不能接。 而且中文本身过度自由了,有 ide 自动完成实现得够好的情况还成,但团队如果有人用的开发工具这个不行的话,估计应该会非常难受。 环境问题还有很多,现在可能还好些,基本上应该问题不大,但我想起几年前吧,有很长一段时间(记得是 java vm 的问题还是怎么的),我用 idea 全家桶没法儿用输入法直接键入中 /日等语言,那会儿要我在代码中用中文那就是要我死。而且这还要求开发环境必须要能用中文,虽然应该很少人遇到这种情况… 混杂拼音的话主要是感觉视认性跟表意性也很差,而且真的看起来会非常不舒服,这个不知道怎么整。日语的话用罗马拼音在这个问题上感觉不会这么难受,可能一方面因为英语中引入日语词汇已经非常多了,观感上已经习惯了,加上日语本身的音节特别干净简单。但是真的用太多看起来还是会非常恶心,而且虽然没有中文那么严重,视认性也还是很烂的。 楼主还有提到数据库,库里的表或栏位或 key 直接使用中文从没做过,不确定可行性,但也感觉难以接受,而且吐出一堆 field 都是中文这个看了会傻眼的吧就。而且 non-ascii 额外还牵涉到编码的问题,整体的可用性可靠性鲁棒性可移植性各种性感觉都会有影响,说就直接 unicode 解决一切拯救世界这个,反正我这种老古董是很难直接就接受的。 反正这个问题真的困扰。为了规避这个问题,我反正常常在其实不需要的情况下强行拆出来结构甚至逻辑,使其完全脱离代码,别问,问就是可自定义,高扩展性,增加业务弹性… 嘛写了一些想法但也没有提出什么建设性的东西,总之我就当插个眼。 |
![]() | 7 Daming 2020-06-26 06:32:41 +08:00 有些特定行业内的枚举值会使用中文,主要是那玩意基本没法正常翻译成英文。 |
10 hantsy 2020-06-26 08:22:08 +08:00 你们这些用中文应该从来没做过国际化的项目,如:多语言支持,本地化页面,虽然每个框架都会考虑国际化。 |
11 dttzmm 2020-06-26 08:59:07 +08:00 via Android 英语不行还是要补英语,找这么多借口不好 |
![]() | 12 lululau 2020-06-26 09:08:50 +08:00 via iPhone 就算拼音首字母缩写也比汉字强啊,汉字输入效率太低,还有输入法切换的开销 |
![]() | 13 murmur 2020-06-26 09:40:12 +08:00 只见过数据库中文,还没见过代码中文,但是有些行业用语真不是你抱着字典就能纠结出来的 又有人来吹国际化,你服务中国人都服务成那样还想着国际化,中国人的项目中国人开发中国人维护中国人使用,哪里能碰到国际化 |
![]() | 14 murmur 2020-06-26 09:42:48 +08:00 ![]() 说英语不行 xxx 的怕是不知道隔行如隔山,更不说有些行业是国内领先,我们用的就是自己的标准,去哪里翻译中文去 |
![]() | 15 murmur 2020-06-26 09:45:28 +08:00 ![]() 我举几个发电相关最基本的词:脱硫 脱硝 电除尘 这些词如果写成中文的话高中文化水平就可以理解,根本不需要文档 把脱硫翻译成英文,desulfurization,这个词怕是过了六级的都不知道啥意思 |
![]() | 16 gwybiaim 2020-06-26 09:47:14 +08:00 ![]() 有利于可读性,就可以做。 上面有人提到的无脑英语优先、切换输入法麻烦、视认性???、国际化、提升英语水平、输入效率的,都找不到编程的重点。 |
![]() | 17 gwybiaim 2020-06-26 09:47:58 +08:00 另,中文也是联合国常用语言,很国际化 |
18 hakono 2020-06-26 09:52:01 +08:00 via Android ![]() @hantsy 一个项目的用户可以国际化,但代码的开发维护者差不多都是固定国家的。 除非本身开发的项目涉及到国际外包,或者公司里不光有中国人还有大量其他国家的职员(这情况在日本美国倒是很常见),一般也不会遇到代码上有国际合作的情况。 |
20 pigspy 2020-06-26 10:09:07 +08:00 我一个同事跟我吐槽过,以前做对日项目的时候,本子写的老代码里面英文变量名音读训读一起来,个别变量还用片假名 |
![]() | 22 invaux 2020-06-26 10:39:46 +08:00 ![]() 我觉得做游戏的应该用中文的多一点吧,毕竟 旋龙幻杀、魔魂天咒、天 bai 魔舞、痴情咒、无间寂、狱 du 龙破、虚空斩、霸天戮杀、毒龙蚀天、灭魂狂飙、天选道怨、百鬼夜行、狱火炼魂、碎魂天袭、凝血神咒、归灵秘印、燃魂劫火、百蛊啖魂、邪神傲世、无量真言、慈航普度、天地同寿、佛光普照、净土真言、六道轮回、破魔秘言、摩诃心经、雷音法谕。影舞形、影舞魂、风切、潜袭、雷切、龙切、斗杀、影舞极 这些技能用英文变量名可能真的会要人老命的 |
23 newtype0092 2020-06-26 10:44:43 +08:00 ![]() 宁愿用拼音也绝对不用中文。 你也说了主流的高级编程语言以及数据库才保证支持 Unicode,无法保证从开发工具到服务器部署整条链上都严格支持的功能还是不贪这个小便宜的好。 |
24 newtype0092 2020-06-26 10:50:03 +08:00 ![]() @WebKit 哈哈游武侠仙侠里的名词,中翻英都要经过一层意译的,不然你以为“龙卷风摧毁停车场”“乌鸦坐飞机”这些词是怎么来的,这个是基本做不到保持原味的。。。 |
![]() | 25 wushigejiajia01 2020-06-26 12:07:57 +08:00 via Android 1.用尽量贴合的英文,然后加注释。 2.中文枚举(这个估计要团队内商量好才行,不然大概率会被喷) 3.中文拼音(再加注释,有可能也会被喷) |
![]() | 26 lithiumii 2020-06-26 12:47:33 +08:00 ![]() @murmur 您这个例子举得不好,desulfurization,de 是去除,sulfur 是硫,后面 ization 是动词化再名词化,可不就是脱硫吗。英语过了六级的人只要认识硫就应该能懂 |
27 yangbonis 2020-06-26 13:07:29 +08:00 via iPhone 把你业务也用用英文描述就行了吧 |
![]() | 28 pinkSlime 2020-06-26 13:49:10 +08:00 请翻译:凌波微步 六脉神剑 修罗阴煞功 万流朝海元元剑法 百变阴阳玄机剑法 |
29 solider245 2020-06-26 14:23:38 +08:00 @murmur 让我想起乒乓球的国际语言是中文。记得有一个笑话,乒乓球某领导新上任,说文档都是中文,国际化不够。 |
30 maoxs2 2020-06-26 14:50:37 +08:00 via Android 四六级:是我的翻译题还不够难吗? |
![]() | 31 qiumaoyuan 2020-06-26 14:55:22 +08:00 @linvaux 哈哈哈哈,太欢乐了。 |
![]() | 32 passerbytiny 2020-06-26 16:06:46 +08:00 如果你接触过传统软件文档、写过论文、或者任何非“门槛低”的行业的文档,那么你会知道一个名词:术语。业务强相关的名词,就算是纯英文开发环境,也要用专门的术语文档或章节来描述,不然外人和新人会眼瞎。你弄个全团队都能一眼看明白的中文变量还可以,否则不如英文代号+术语描述。 |
33 jiangweixian 2020-06-26 16:12:54 +08:00 在菜鸟阶段干过,但是被教育编程是英本位的行为,所以还是英文变量名比较合适。感觉说的挺合理,要是以后出现一门中文的编程语言,中文变量名是没啥毛病的。 |
![]() | 34 DJQTDJ 2020-06-26 16:31:00 +08:00 多了去了,曾经干过德语项目,这你妈还见过用德语命名变量的。 |
![]() | 35 murmur 2020-06-26 16:47:46 +08:00 ![]() |
36 snowonion 2020-06-26 16:49:05 +08:00 via Android img src="http://www.v2ex.com/static/img/heart_20250818.png?v=c3415183a0b3e9ab1576251be69d7d6d" width="14" align="absmiddle" alt="" /> 1 see also 大家对于中文变量名是如何看待的? https://v2ex.com/t/615420?p=2 我是支持的,具体见 130 楼 |
![]() | 38 justin2018 2020-06-26 20:52:42 +08:00 实在没有合适的英文 可以拼音 + 注释 无法忍受变量中文名~~~ |
![]() | 39 xiangyuecn 2020-06-26 21:02:08 +08:00 ![]() 当同样的东西又几十上百个的时候。。。写国语的便利性,不说话,看代码: ![]() ![]() |
![]() | 40 ethusdt 2020-06-26 21:47:19 +08:00 |
![]() | 41 Zien 2020-06-26 21:59:33 +08:00 ![]() 我以前连注释也不用中文,但现在感觉也无所谓吧,只要更利于阅读理解和业务,而且运行环境能控制好,且业务只在国内的话,也可以因地制宜。 |
42 sohoorc 2020-06-27 10:10:22 +08:00 给某部委做项目,国家标准的字段是中文首字母字符串。 所以我们自然也就按照国家标准来,用拼音首字母。 |
45 annielong 2020-06-27 19:48:55 +08:00 优先用英文术语,没有用国标字符串,再次就用拼音加注释, |
![]() | 46 Code418 2020-06-30 17:33:04 +08:00 @slyang5 就你在看代码呢?而且我说的罗马拼音混代码里头看着难受,你在这儿 high 个什么?参予过实际业务项目被虐过才知道烦。而且我的感受跟人家规范有几毛钱关系? |
![]() | 47 Code418 2020-06-30 17:44:23 +08:00 @cshijiel 劳您视认性打了三个问号,我觉得这边得回应一下。 这边是故意用这个词跟可读性切割开来的。我原本提到这个词指的是用拼音,如果把词给看出来了,那代码本身可读性应该是跟你直接使用日语 /中文是一样的,尤其在这边提到的特殊业务场景下。 但是问题在于看拼音还得花力气先看出来在写的是什么呢?就这么个情况。当然可能用词不是很精确,我原本也其实就是讲点个人碰见过的情况跟感受。 举个极端点的例子,编辑器你高兴用什么字体,都不能说字体让代码的可读性变差吧?但是太花里胡哨的你自己都得花力气去看懂,当然也有典型的 0OiI 之类的问题存在。虽然不太精确,但我这视认性指的就类似这种情况。 |