请问,用中文作为 方法和变量的名字 有什么利弊?

在写 java 代码时,是可以用 [color=red]中文[/color]作为[color=red]变量名[/color]和[color=red]方法名[/color]的。从可读性和可维护性来说,似乎用中文作为 变量名和方法名 对我们中国人来说具有更好的可读性和更好的可维护性。

请问,你会这样用吗?为什么?

74个回答

为了说这个问题,先来看个活生生的例子:http://blog.csdn.net/niko7/archive/2004/12/22/225327.aspx

比如类名是中文的,每次new 的时候就麻烦了。方法名是中文的,调用的时候就麻烦了。
这种麻烦主要是来自代码辅助生成时,按了“.”以后必须往下翻,或者切换到中文输入法输入,很麻烦。并且完全享受不到IDE的驼峰提示的好处了。

还有个头疼的问题是,中文没有大小写区别,导致bean的属性命名规范体现不出来,所以会导致一些框架出现问题。而JavaBean的规范之所以那么规定,显示是没有考虑到中文。

所以,中文能作为类名,方法名,属性名,变量名是纯属偶然,仅仅是因为Java内核支持UTF-8,所以这些字符都没有问题;也不会出现上面说的,找不到变量的问题,在class文件内都是同一编码的,jvm内核就是支持UTF-8的。可以放心使用。

结论是:Java支持中文类名、方法名、属性名,并且不会因为乱码问题导致运行期链接失败。这是Java内核支持UTF-8这一特性决定的。
但是Java语言规范里并不支持这一用法,可以从JavaBean规范看出来。
很多框架不支持,是因为中文属性名与JavaBean规范不友好造成的。

为了带来有限的“容易理解”,却导致程序功能不正常了,是得不偿失的,所以:不推荐使用。

那么在属性名之外的地方,还是可以尝试使用的,比如成员变量名、类名、方法名中。
Java5开始有枚举了,枚举值的名称相当于类名,使用中文优势蛮大的。

因为现代IDE的突飞猛进,我有时候是用英文取个名,把代码写好,在后期优化的时候会把变量名重构成中文的。这样易于输入,也易于理解。

完全可以使用中文,java编码规约里压根就没提到除英文字母、希腊字母、拉丁字母之外的约定,况且java语言开发者既然支持了广泛编码,那他的本意就是如此。
使用中文好处:
1.便于区分系统关键字和自定义关键字。
2.确如楼主所说:从可读性和可维护性来说,用中文作为变量名和方法名(甚至类名、包名)对我们中国人来说具有更好的可读性和更好的可维护性。
3.汉语具有多义和浓缩特性,需要表达同样的意思,所用字长一定比英文短(对比英文文章和中文翻译就知道了),省空间。
4.关于通用性和兼容性,可以采用折中的方案:把与网页、数据库等外部交互的方法、类、包集中起来,其中与外部传输数据的部分使用英文(这样网页、数据库等的编码就自由定义了,无需考虑平台兼容性、通用性、可移植性了),java程序内部使用中文,与外部交互使用英文,外部数据你想使用什么编码都无所谓。
5.如果使用中文,编码规约里的一部分规定就不必理睬,想怎么写就怎么写(因为没有规定)。
6.关于第三方框架、规范:尽量避免在这里使用中文,即便java本身设计考虑到了广泛编码,第三方毕竟未能领会理解java开发者或者规约本意。对于需要使用的地方,可以采取第4条方法,将这类使用英文的代码集中处理。这里称赞一下eclipse对规约的理解一级在多语言编码上的努力。
PS:让我加入汉化组,我一定连setter和getter也汉化了。

wuxuanecios
中文编程 欢迎到中文编程qq群一聚: 620225373
11 个月之前 回复

用中文倒是真没试过。。。。。
还是英文的通用性高吧。

用中文的话可移植性肯定差了。

相信中国的程序员,都会几句英语吧,编程语言里的关键字全是英文。
没有必要为了自己的母语,把变量也弄成中文。

想让更多人的看懂,可以加些中文注释倒还可以。

写的时候,要切换输入法.....就这点就相当不方便了.

中文并不一定能改善逻辑的理解.必要的注释还是要的.变量/方法名也不会用很晦涩的单词吧.

如果使用中文的话 将编译好的工程 换个操作系统运行 不知道会出现什么问题

工程内的文件夹的名字一般都统一使用小写

使用小写也是有他的理由 我忘记是那个公司了 好像是sun公司
开发的时候出现了问题 把报名换成小写 就不出问题
所以开始建议 统一用小写

还是按常规来吧 :D

LZ可以看看Java编码规约。
规约不是拍脑袋随便规定的,每一条都有它的道理。
规约里规定类名首字母大写,变量名首字母小写。

虽然我们都知道一般不用中文名,但还真没细想过,关注下

利:也许你看的时候感觉很好理解

弊:一旦出现编码不一致的问题,中文就会出现乱码,你想一下还能调用的到吗?

用中文当变量名、方法名的话可读性没有你想像的那么好吧,你想想你引入的类是英文,而该类对象是中文,让维护的人恶梦啊,不建议这么做。

共74条数据 1 3 4 ... 尾页
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问