javascript - js里使用中文变量名有哪些缺点?
高洛峰
高洛峰 2017-04-10 14:37:31
0
11
1343

Ecma262规定标识符中可以使用ASCII扩展字符和Unicode字符:

var 安静的美男子 = {高: 149, 富: 0, 帅: undefined};

var ಠ_ಠ = 安静的美男子.帅;

写这样萌的代码,真的不好吗?
在浏览器中执行类似这样的代码有什么隐患吗?
使用中文或颜文字做变量名除了不支持驼峰格式外,还有那些缺点?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

membalas semua(11)
小葫芦

其实没什么不好,但是

软件开发应该是国际化程度非常高的一个职业,相对于约定成俗的编程习惯,中文在此谈不上有任何优势,而且根本没这个必要。

还有一个很复杂的问题,中文输入法一般都是默认使用全角字符的。我们在使用英文写代码的时候并不需要切换语言,但是用中文变量名在输入一部分符号的时候还是要切换成英文(或者是半角字符),挺麻烦的。【如果说非要设置成在中文状态下默认就使用半角符号,作为强迫症我认为这种行为不能忍受,需要打死】

私下里用用可以,但是我还是倾向于,我希望外国友人也能看懂我的代码。

迷茫

这是完成中华民族伟大复兴的必经之路。

这是中国崛起的前奏。

“使用汉字做变量名,从我做起”

使用中文做变量名的程序,在运行时,通常都会弹出一句话:不赞不是中国人

阿神

挺有意思的问题。不过既然楼主是问缺点,那就专门谈谈缺点。

  1. 首先,有的答案已经指出了,软件开发是一项国际化很高的工作,先谈比较远的,比如某天你们团队招了个老外,老外还要不要做开发了?
  2. 或者你远走他乡,去了个周围都是老外的地方,还要不要复用以前的代码?
  3. 或者,你的代码进到了某个unicode或者中文处理不当的地方(比如某些变态的浏览器,或者很低版本的Node.js或者某些单片机,甚至或者是别人自己写的解释程序),有可能会挂掉,当然也有可能让别人的程序挂掉。
  4. 你的代码进到了某台没有中文字体的机器,如何查看??(和第3点是不同的问题哦)
  5. 或者进到没有中文输入法的机器,如何编辑??
  6. 或者进到编码设置错误的机器(比如Linux),如何查看编辑??
  7. 打起来麻烦
  8. 中文产生混淆的概率比英文要大得多,比如var 一=1,——=2;var 二=一-——;你知道是多少么?
  9. 符号组合做变量容易引入空格或者其它空白字符混淆,比如var 对象={};对象["^_^ "]=1;对象["^_^"]=2;你真的分得清么?
  10. 差不多了,如果被鄙视也算的话,刚好凑够10条
巴扎黑

没装输入法就不能写代码

小葫芦

你在项目里试试,保证打不死你。

小葫芦

因为大家都不这么写!

小葫芦

外国人看到你写的东西,和你看到下面这段代码,感觉差不多。自行体会一下:

#define 喵喵喵 main
#define 喵喵 int
#define 喵 (
#define 喵喵呜 )
#define 喵喵喵喵 {
#define 喵呜喵 }
#define 喵呜喵呜喵 printf
#define 呜 "\n"
#define 喵呜喵呜 return
#define 呜喵 0
#define 喵呜 ;
#include <stdio.h>

喵喵 喵喵喵 喵 喵喵呜
喵喵喵喵
喵呜喵呜喵 喵 "喵喵喵! " 呜 喵喵呜 喵呜
喵呜喵呜 呜喵 喵呜
喵呜喵
巴扎黑

有时使用中文反而方便,比如多语言切换:

var lang={
    locale: 'zh-cn',
    '首页':'首页',
    '菜单':'菜单'
}

var lang={
    locale: 'en-us',
    '首页':'Home',
    '菜单':'Menu'
}

<li><%= lang['首页'] %></li>
<li><%= lang['菜单'] %></li>

通过其他的手段引入不同的lang变量,使用的时候使用中文属性,可以增加可读性,也不会因为词汇量匮乏或者命名不规范造成误解

伊谢尔伦

虽然是行得通,但是你还要考虑文件编码问题的话,中文就不合适了

巴扎黑

如果能做到比较智能,其实也没大家想的那么噁心,起码在某些非专业的又需要部分编程开发的领域可以降低学习门槛

因为没有关键字高亮,所以我就手动高亮下

如果 我的年龄 大于 十八 那么
    我的类型 是 成年人
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan