0 0

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

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

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

问题补充:
redstarofsleep 写道
用中文倒是真没试过。。。。。
还是英文的通用性高吧。

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


在类
Java_KAbanban 写道
利:也许你看的时候感觉很好理解

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


统一使用 utf8 是没有问题的,从数据库到网页,全部都用 utf8 相信就不会出现编码的问题。

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


我记得在 c 语言的编程规范里有两种,一种是和现在的 java 类似,另一种是,用下划线来分开各个单词。规范的制定,说到底是为了使代码更易于阅读和维护。但现在的 java 编程规范的制定,肯定没考虑过类似中文等其他语言。所以我认为这个规范是有限制的。我们可以考虑用下划线来区分词语。

问题补充:
jinceon 写道
我还真见过人用中文,他说他们老师推荐用中文,容易理解。
看到那些get学生,set学生,我就郁闷。

这是不是因为你不习惯而已?

问题补充:
redstarofsleep 写道

那JavaBean呢?如果一个类的成员变量都是中文的,那么它的get/set方法怎么写?你自己调用是没问题,放到框架里(Struts2,Hibernate这类的)还能自动设入值吗?


这个我没有测试过。但从个人经验上分析,你说的这些框架应该是能支持的。就象上面的朋友所说的:

我还真见过人用中文,他说他们老师推荐用中文,容易理解。
看到那些get学生,set学生,我就郁闷。
jinceon (初级程序员)

他们的老师敢推荐这些学生用中文,如果这些老师自己没有试过就推荐,可能性不大。因此我认为你说的这个应该不成问题

问题补充:
redstarofsleep 写道
我在Struts2上试过了,是不支持的,拿不到值,返回null。

而且这在理论上也是说不通的,完全违反了javaBean的规约。JavaBean对于变量名和get/set方法有着非常苛刻的要求。

除了Javabean之外,现在很多框架都支持不用配置文件,按照约定来命名就能自动认到。用中文的话,这种方式也可能会有问题。


昨晚回去后简单测试了一下。我的测试环境是: springside 3.3.4(spring3 + struts2 + hibernate + h2database),全部用 utf-8。测试大约过程是,在实体字段全是英文的情况下:

1、添加字段,可以自动对应在数据库中的表添加
2、可以正常取出数据。

当把某个实体的字段改为中文后:

1、hibernate 不能自动添加字段到数据库表中;
2、手动通过sql往数据库表中添加了一个中文字段后,并添加相应的数据;
通过 h2的界面添加修改数据没有问题(h2本身是 java 写的,从这个意义上说,jdbc 是支持中文字段的)。但最后在前台的界面(struts2)中没有显示相应的数据;
在前台界面中输入数据,在没有更改非中文字段数据的情况下,hibernate 没有输出 update 语句;如果更改了非中文字段,那么非中文字段的数据能正常更新,但中文字段的数据没有取到,没法保存。

具体中间到底是 哪个部分不支持,现在还暂时没有深入测试。等明天有空再测试一下。

另外,很多朋友说,用中文作为变量名/方法名,是不符合 javabean 等相关规范的。因为我没有阅读过相关规范,暂时也没空去看。大家能不能简单说一下,javabean 等规范要求必须使用英文作为变量名吗?还有,为什么 java 要支持使用非英文字符作为变量名和方法名呢?这样做有什么意义?

反过来,我们能不能这样认为,既然java支持使用非英文字符作为变量、方法名,但现在很多框架、规范不支持,那是不是这些规范、框架的缺陷和 bug ?

ps:我发布这个问题的初衷在于探讨这种可能性,不考虑外国人看不懂等问题。

问题补充:1、有些朋友说,用中文编码后,代码的可读性和可维护性可能更差。我相信这种情况是存在的。但我更相信,作为中国人,绝大部分人用中文表达思想胜于用英文表达。

之所以出现用中文编码比英文编码更难读懂,我想最主要的是习惯问题。比如设计模式的名称,一个类名称用了设计模式的名称,基本上懂设计模式的阅读者一眼就知道编码作者想做什么了。另外是一些习惯用法,比如,一些名 action、service、thread 的类,类里的 execute 方法。如果这些也用中文来命名,就使得可读性、可维护性变得更差。

所以我比较倾向于编码中,一般情况用英文编码,但部分地方用中文。举个几个用中文感觉更合适的简单的例子:
我们有时候定义一些常量,如,男 -> 1,女 -> 0,-1 -> 未知;
我们写一些枚举类,里面定义了一些如中国的地名等;
一些业务方法、一些类属性用的英文很难表达,或英文单词本身比较生僻;
这些情况下,我们用这样的代码:City.广州、City.深圳 就比用 City.GuangZhou、City.ShenZhen要强一些。

当然我也没有真正用中文做过编码,更适合的场景也举不出例子来。

2、关于中英文切换和输入的速度的问题。
因为我常用中文来写注释,但我很少会因为中英文需要切换而感到困惑。
而对于输入速度,如果是写注释,我用英文时常因不知道怎么用英文来表达而苦恼,需要思考的时间很长;而对于在代码中的变量和方法名,我常常为了使变量名、方法名能准确地表达我想要表达的意思而去查词典,并且对词典查出来的几个单词,仔细斟酌该那个单词更合适而花费大量的时间。

所以我认为速度并不是使用中文编码而需要考虑的情况。

问题补充:
niko7 写道
为了说这个问题,先来看个活生生的例子: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的突飞猛进,我有时候是用英文取个名,把代码写好,在后期优化的时候会把变量名重构成中文的。这样易于输入,也易于理解。

非常不错。如果明天没有更好的回答,采用这个为最佳答案了。
2011年5月11日 12:04

74个答案 按时间排序 按投票排序

0 0

采纳的答案

为了说这个问题,先来看个活生生的例子: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的突飞猛进,我有时候是用英文取个名,把代码写好,在后期优化的时候会把变量名重构成中文的。这样易于输入,也易于理解。

2011年5月18日 14:49
0 0

用Ascii字符编码在任何平台下都不会有问题,如果采用中文编码,错误的设置字符编码会导致不能编译,在没有安装中文的平台上无法显示中文。

2011年5月19日 19:01
0 0

我之前做webgame的时候就碰到过后台java服务端方法名还有参数以及变量都是中文做的,当时觉得很好奇,现在想想虽然从可读性性上来讲是让我们能够一目了然但是从移植性上将就不行了,把服务部署到linux unix 上的时候就不行了。

不知道楼主你问这个问题是想怎么做打算这么开发你的项目么?

2011年5月19日 17:54
0 0

我不认为用中文命名就有好的可读性和可维护性,这种底层的东西还是用英文正规些。

2011年5月19日 15:58
0 0

有的平台会报错,通用性低!

2011年5月19日 12:32
0 0

不通用,建议少使用

2011年5月19日 11:15
0 0

看了你的补充,发现你完全没明白到底是为什么不用中文。什么驼峰啊,IDE啊,那都是次要的,等你用中文开发,还不搞个中文的IDE啊,再有什么JAVABEAN规范,等你掌握技术的时候,你就可以定规范,还管什么别人的规范。

2011年5月18日 21:32
0 0

不错 不错... 以后咱们中国人就好开发了
什么时候也行成标准就好了..  

2011年5月18日 17:59
0 0

个人喜欢而已,如果允许,用中文是很不错的.但开发效率不是很高,打字慢.

2011年5月18日 17:53
0 0

从来没试过。。不过很多框架。。将不能使用

2011年5月18日 15:57
0 0

通用性和平台移植性差,不应该使用中文进行函数、变量、类等的命名!

2011年5月18日 15:12
0 0

物料的问题 你用汉语拼音也比中文强

2011年5月18日 14:43
0 0

这个其实写代码还是不要过多引入中文的,还有很多地方其实注释都不用中文的,一则是和编码经常有关跨平台就很容易乱了,再次规范的话都是国外顶出来的,肯定是英文的。也建议英文,起码是拼音

2011年5月18日 13:31
0 0

中文的感觉会是很好的,,,,
但是没有英文的,适用

2011年5月18日 08:41
0 0

1.通用性较差
2.代码的可一直性差,将源代码拿到其他的开发工具中可能会出现乱码。
3.个人理解在jvm对代码进行编译时候增加了中文转换成unicode编码的过程,如果中文较多影响编译效率。

2011年5月17日 15:52
0 0

曾经用中文的类名和方法名做过一份课程设计, 被老师臭骂了一顿。 呵呵, 或许对于程序员而言, 用英文字符写程序都成了习惯。

基于存在即合理的原则, 这种习惯有一定的优势吧, 曾经想尝试对编译器做封装, 把java中的关键字也编程中文的。 但是后来感觉意义不大,放弃了。

不过真用中文的话,肯定会有许许多多的问题的。 因为现在项目中需要用到许多开源的包, 而那些包可能不兼容你的代码。

还有当你的代码放到其他语言的操作系统中是否支持呢, 相信你那样开发的系统跨平台应该会有问题吧。

2011年5月17日 11:43
0 0

使用中文可移植性会降低

2011年5月17日 11:33
0 0

核心的东西都是老外写的,整个环境就是用的英文写的。如果用中文最常碰到的就是编码的问题,如果你采用与你开发用到的框架完全一致的编码理论上是没有问题,可是往往是几个框架一起用,例如strurs+spring+hibernate 他们开发时用的编码不一定相同这是你就没有办法统一编码了,用英文就不存在这个问题。

不用中文的原因主要就是通用性、易维护。

如果只是限制在一个很小的范围之内那中文就有可能可以用。,在实际项目中这种可能性很小,从个人的发展来看你肯定不能那样用中文的。

没有绝对的东西,所有的利弊都是相对的。

2011年5月17日 09:58
0 0

回答的帖子自己不能删除啊
我本只想试试你们编辑器的效果。

2011年5月17日 09:50
0 0

vsdfsfd[b]fsdfsdfsd

引用
fsdfsdfsdfsdfsdfsdfsd
fsdfsdfsdfsdfsdfsdfsd
fdsfdsfds

2011年5月17日 09:48
0 0

可读性和可维护性的根本在于“统一”,是否是中文、英文无所谓。就像你写文章,你不能一句话中既有拼音,又有中文、法语、英语。这样的文章肯定没法读。而既然你编程的环境都是以英文为主体的,包括编译器(中文的空格等符号,很多编译器不支持,难道你把他们手动替换成英文的,自找麻烦?)、系统调用(给所有系统添加包装器?你添加的过来么?)等。除非你把他们都换成中文,否则是行不通的。

2011年5月17日 09:11
0 0

主要是编码问题,还有就是麻烦!

2011年5月16日 19:48
0 0

在写 java 代码时,是可以用 中文作为变量名和方法名的。从可读性和可维护性来说,似乎用中文作为 变量名和方法名 对我们中国人来说具有更好的可读性和更好的可维护性。
但是从标准上来讲,最好还是用英文,应为用中文的话不同平台文件编码不同,可能会出现乱码情况,而且中文做变量名有点别留

2011年5月16日 16:27
0 0

不可否认有些时候使用中文会通俗易懂,但是在编译时,中文的识别性就会差些,有时候就会出现乱码,而且移植性较差,再说在一堆英文当中突然出现几个中文,个人感觉很突兀。

2011年5月16日 12:33
0 0

没有必要使用中文作为方法名和方法名,这样会导致通用性移植性不够好

2011年5月16日 11:43
0 0

用中文? 老外不懂类.哈哈.

2011年5月16日 11:09
0 0

这。。。情何以堪。。。

2011年5月16日 10:52
0 0

引用
一些业务方法、一些类属性用的英文很难表达,或英文单词本身比较生僻;
这些情况下,我们用这样的代码:City.广州、City.深圳 就比用 City.GuangZhou、City.ShenZhen要强一些。

当然我也没有真正用中文做过编码,更适合的场景也举不出例子来。

2、关于中英文切换和输入的速度的问题。
因为我常用中文来写注释,但我很少会因为中英文需要切换而感到困惑。
而对于输入速度,如果是写注释,我用英文时常因不知道怎么用英文来表达而苦恼,需要思考的时间很长;而对于在代码中的变量和方法名,我常常为了使变量名、方法名能准确地表达我想要表达的意思而去查词典,并且对词典查出来的几个单词,仔细斟酌该那个单词更合适而花费大量的时间。

所以我认为速度并不是使用中文编码而需要考虑的情况。


引用
当然我也没有真正用中文做过编码,更适合的场景也举不出例子来。

引用
并且对词典查出来的几个单词,仔细斟酌该那个单词更合适而花费大量的时间。

遇到这样的我直接使用ZhongWenPingYing,一般都看得懂的。

2011年5月15日 13:36
0 0

这样做。。可能你好理解,可是别人不好理解啊

2011年5月14日 23:08
0 0

在little endian的机器上写一段代码,然后往big endian上移植一下?

2011年5月14日 19:57
0 0

从jvm和java语法层面来说,完全可以这样做:中文作为变量名甚至方法名。

业界为什么不用呢?
答:
1. english是惯例。
2. 为了使用轮子:类似反射,或者jdbc等等旧有的代码或者数据或者程序,他们未考虑utf8编码的变量名或方法,所以在运行时非常可能无法正常运行。
3. 书写速度:英文比中文更加容易和快速。
4. 阅读:中文读起来并不比英文有优势
5. 出错概率:全角和半角看起来差不多,用中文开发比英文更容易出错。

2011年5月14日 17:32
0 0

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

2011年5月14日 14:09
0 0

个人感觉可以用,习惯问题,如果你觉得用中文好,只要你所有的东西都同一编码,没有问题,JAVA本来就支持各种语言,只是大家习惯了用英文写。

2011年5月13日 23:39
0 0

我刚才试了一下Spring的容器的自动注入,和java的反射,都可以支持中文的类名、方法名和成员变量。

本来我是想的java反射里面会有问题,例如变量名的小写开头如memField,它的set方法是setMemField(),其中的M要变成大写。但是,用中文的成员变量时,用反射方式set值也可以。

这说明,从语言角度是可以支持中文的,至于有一些框架不支持,只因为在数据的传递过程中,有一些地方有编码的问题。

但是,就算支持,用中文也非常的不方便,上面很多人都提到了许多理由。

2011年5月13日 23:02
0 0

我试过,Oracle里字段用的中文,Hibernate反向工程,出来的Pojo里属性都是中文,完全没有问题,反正都是utf-8,中文跟英文没有质的区别,编译成class文件就完全没有区别了吧?

2011年5月13日 21:34
0 0

  
可读性太差。效率不好

2011年5月13日 17:17
0 0

中文敲起来麻烦

2011年5月13日 17:12
0 0

可移植性查   乱码问题就更多了

2011年5月13日 16:40
0 0

個人認為用英文最大的好處是變量多:比如我要定義一個數字:int i; int j; int k; int index; int num; int count; int no;....可以有很多種特別是用作標識性的東西,本來就沒什么意義的,用英文的就方便多了.

2011年5月13日 15:46
0 0

引用
javabean 等规范要求必须使用英文作为变量名吗?还有,为什么 java 要支持使用非英文字符作为变量名和方法名呢?这样做有什么意义?

反过来,我们能不能这样认为,既然java支持使用非英文字符作为变量、方法名,但现在很多框架、规范不支持,那是不是这些规范、框架的缺陷和 bug ?


●有没有要求【必须】用,这个问题很扯淡。就算你不按规范,难道会编译不通过,无法运行?只是一种建议,一种良好的约定俗成的规范是很有意义的。
●为什么要支持非英文字符?这是一种长远眼光吧。未来用非英文字编程会不会成为潮流,不好说,但是现在不提倡。
●也许能这样认为吧。等这些框架支持了后,等大多数人适应了后,也许用非英文字母编程就会成为潮流了。

2011年5月13日 13:27
0 0

我觉得用中文编程,是软件行业的倒退,
试想如果都像你这样想,俄罗斯人用俄语编程,
日本人用日语编程,依此发展下去,日本人写的
rail 框架你是不可能看得懂的,好的经验很难借鉴过来,
用中文编程只会是给程序员添乱,是目光短浅。
软件这个行业从一诞生就是国际性的,这是与其他行业很大的不同。
中国软件还没有发展起来就想着先封闭自己,愚人自扰之。

2011年5月13日 13:08
0 0

一个字:乱!~

2011年5月13日 11:12
0 0

从:http://www.iteye.com/topic/19446?page=4 引用过来的,看了有什么感觉?

等值命题( "\u7684", "的" );;  
  
字符串包装 的 = new 字符串包装("的");;  
  
byte[] B5_C4 = new byte[]{(byte);0xB5, (byte);0xC4};  
byte[] AA_BA = new byte[]{(byte);0xAA, (byte);0xBA};  
byte[] E7_9A_84 = new byte[]{(byte);0xE7, (byte);0x9A, (byte);0x84};  
  
等值命题( new byte[]{'?'},      的.取字节("ISO-8859-1"); );;  
等值命题( new byte[]{'?'},      的.取字节("US-ASCII"); );;  
等值命题( B5_C4,                的.取字节("GB2312"); );;  
等值命题( AA_BA,                的.取字节("BIG5"); );;  
等值命题( E7_9A_84,            的.取字节("UTF-8"); );;  
等值命题( new byte[]{-1, -2, (byte);0x84, 0x76}, 的.取字节("UNICODE"); );; // 这个不一定对  




类 对象类 = 类.取类(Object.class);;  
类 类的类 = 类.取类(类.class);;  
真命题( 对象类 == 类的类.父类(); );;  
真命题( 类的类.有实例(对象类); );;  
真命题( 对象类.有实例(类的类); );;  
真命题( 对象类.可来自(类的类); );;  
假命题( 类的类.可来自(对象类); );;  
  
类 字符串类 = 类.取类(String.class);;  
真命题( 字符串类.是一种(对象类); );;  
真命题( 对象类.可来自(字符串类); );;  
真命题( 字符串类.有实例(""); );;  
假命题( 字符串类.有实例(null); );;  
真命题( 对象类 == 字符串类.父类(); );;  

2011年5月13日 10:54
0 0

真想用,就用呗.走自己的路,怕啥.出了问题再找再改就是烦点事多点.我想楼主拿出这个问题讨论时就考虑到了这些.当然如果楼主用到一些第三方的东西,代码本身没考虑到中文会出现的bug,楼主也不用怕源码上改吧.我相信楼主能搞定

2011年5月13日 10:54
0 0

http://www.iteye.com/topic/19446  这里也又讨论。。。

2011年5月13日 10:43
0 0

字符集 除非你统一  不然换个环境 好比win到linux 就会出现很诡异的现象

2011年5月13日 00:48
0 0

1、编码问题
2、某些辅助工具可能不支持中文
3、代码规范
4、国际化
5、...乱侃的,不喜请见谅,:)

2011年5月12日 21:03
0 0

你要引用变量的话超麻烦 还要切换输入法.
实际上开发效率反而慢

2011年5月12日 21:03
0 0

如果中国的开发人员能开发出一系列像我们现在用的软件的话,你再来谈论这个吧

2011年5月12日 17:32
0 0

1. 首先从规范来说, 用中文严重违反java规范的描述
2. 字符集问题, 如果你的程序在国外,会有问题
3. 可移植性,可维护性很差, 如果你的代码要一个不懂中文的外国人来维护,还有迁移到一个支持中文字符集不好的环境中, 就很麻烦了.

2011年5月12日 15:28
0 0

只说一个事,语境问题.你在中国一个说汉语的地方,你偶尔说两句e文那叫洋气.如果说得了你周边的朋友怎么看你?同样你做软件开发一个理,但英语是计算机编程语言中的母语,你要说中国话,编程世界中绝大多数在说英语的会怎么看你说中国话的.如果坚信一句走自己的路别人去说吧,ok,go on..

2011年5月12日 14:37
0 0

首先是移植性差  其次是通用性差 有违开元之说

2011年5月12日 14:13
0 0

编码格式问题,防止出现乱码

2011年5月12日 13:35
0 0

1.容易出现乱码
2.在网络上传输慢,浪费资源

2011年5月12日 13:21
0 0

通用性应该不是很好!

2011年5月12日 12:56
0 0

中文移植性差,且在移植运行中容易出现编码问题,通用性差

2011年5月12日 11:30
0 0

不要觉得什么规范是约束,其实是为了让我们更好地合作。
就算你现在有一百万个理由反驳我们,又怎么样?
================================
若干年后会怎样,不清楚。。
但是至少现在,面试你的人,不会赞成用中文。

2011年5月12日 11:27
0 0

如果哪个老师推荐用中文,那不得不怀疑这老师的水平,所谓的用中文编码的都是一些demo而已,商业开发谁敢get学生,set学生这么用?
绝对同意,当时我看到那个帖就建议他不要用中文,不过听不听是他的事

2011年5月12日 11:22
0 0

他们的老师敢推荐这些学生用中文,如果这些老师自己没有试过就推荐,可能性不大...
你还真说错了。。。。
好吧,就当我不习惯吧。
不过我相信【不习惯】的应该是大部分。
尤其是如果你想去大公司,去外资,你用中文????

2011年5月12日 11:21
0 0

我只是想说在理论上没有问题,但是在实践中你会碰到很多问题,有的时候不是改编码为utf8就能解决的,很多东西都是老外设计的,你保证他们在中文环境下都测试过?
如果哪个老师推荐用中文,那不得不怀疑这老师的水平,所谓的用中文编码的都是一些demo而已,商业开发谁敢get学生,set学生这么用?

2011年5月12日 11:03
0 0

如果单纯的为了好理解,你可以选择用注解啊?
如果用中文的话会出现编码问题......

2011年5月12日 10:05
0 0

引用
这个我没有测试过。但从个人经验上分析,你说的这些框架应该是能支持的。

我在Struts2上试过了,是不支持的,拿不到值,返回null。

而且这在理论上也是说不通的,完全违反了javaBean的规约。JavaBean对于变量名和get/set方法有着非常苛刻的要求。

除了Javabean之外,现在很多框架都支持不用配置文件,按照约定来命名就能自动认到。用中文的话,这种方式也可能会有问题。

2011年5月12日 09:57
0 0

用中文作变量名和类名,实际上就是给自己找麻烦。

2011年5月12日 09:56
0 0

引用
我记得在 c 语言的编程规范里有两种,一种是和现在的 java 类似,另一种是,用下划线来分开各个单词。规范的制定,说到底是为了使代码更易于阅读和维护。但现在的 java 编程规范的制定,肯定没考虑过类似中文等其他语言。所以我认为这个规范是有限制的。我们可以考虑用下划线来区分词语。


那JavaBean呢?如果一个类的成员变量都是中文的,那么它的get/set方法怎么写?你自己调用是没问题,放到框架里(Struts2,Hibernate这类的)还能自动设入值吗?

2011年5月12日 09:37
0 0

引用
统一使用 utf8 是没有问题的,从数据库到网页,全部都用 utf8 相信就不会出现编码的问题。


这样子可移植性大大降低,如果某段代码在其它项目中可以被重用,而那个项目不是UTF-8的,那改动就很大了。
而且中文比英文占用更多的空间,不管是你的原文件还是编译出来的class文件,体积都会变大。

2011年5月12日 09:34
0 0

我还真见过人用中文,他说他们老师推荐用中文,容易理解。
看到那些get学生,set学生,我就郁闷。

2011年5月12日 07:52
0 0

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

2011年5月11日 21:30
0 0

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

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

2011年5月11日 19:33
0 0

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

2011年5月11日 18:12
0 0

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

2011年5月11日 14:56
0 0

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

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

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

还是按常规来吧

2011年5月11日 13:17
0 0

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

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

2011年5月11日 12:39
0 0

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

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

2011年5月11日 12:25
0 0

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

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

2011年5月11日 12:12

相关推荐

    (源码)基于C语言的SmartPlugModbus固件项目.zip

    # 基于C语言的SmartPlugModbus固件项目 ## 项目简介 该项目是一个基于C语言的固件项目,旨在实现一个支持Modbus RTU通信协议的智能设备固件。该固件被设计为与SmartPlugModbus设备配合使用,用于控制和管理多个电源插座,提供过流、欠流、过压、欠压和过热保护,同时监控插座状态和电压、电流等参数。 ## 项目的主要特性和功能 1. Modbus RTU通信协议支持固件实现了Modbus RTU通信协议,允许通过Modbus协议与设备进行通信,包括读取和写入设备参数、状态和控制命令。 2. 多插座控制固件支持控制多个电源插座,包括开启、关闭、查询状态等。 3. 保护功能设备提供过流、欠流、过压、欠压和过热保护,防止设备损坏和安全事故。 4. 参数配置通过Modbus协议,用户可以配置设备的保护参数,如电流、电压限制等。

    毕设单片机实战项目基于ESP8266 Mesh SDK开发,通过HSPI与STM32通讯.zip

    【项目资源】: 单片机项目适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。

    毕业设计物联网实战项目基于龙芯派的物联网食品仓储监测系统.zip

    【项目资源】: 物联网项目适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。

    (源码)基于嵌入式系统的StackAttack游戏项目.zip

    # 基于嵌入式系统的StackAttack游戏项目 ## 项目简介 StackAttack是一个基于嵌入式系统的游戏项目,设计用于SPI TFT彩色液晶显示面板上运行。游戏的核心玩法是操控一个名为“Claw”(爪子)的游戏角色,在由格子组成的地图上移动并抓取箱子。玩家通过操纵杆控制游戏角色,成功抓取并移动箱子到目标位置后得分。游戏地图由二维数组表示,每个格子代表一个位置。当玩家成功将所有箱子移动到目标行时,游戏结束。 ## 项目的主要特性和功能 1. 游戏角色控制玩家通过操纵杆控制Claw(爪子)角色移动。 2. 地图和箱子管理游戏地图由二维数组表示,每个格子代表一个位置。箱子在游戏地图上的位置由数组中的值表示。 3. 游戏逻辑包括角色的移动、箱子的抓取和移动、得分计算等。 4. 图形显示使用SPITFTILI9341图形库控制SPI TFT显示屏,实现游戏的图形输出。 5. 暂停功能游戏支持暂停功能,方便玩家随时暂停游戏。

    【嵌入式系统与计算机视觉】基于STM32、OpenCV和CNN的车牌识别系统:社区车辆管理与收费应用

    内容概要:本文档提供了基于STM32、OpenCV和卷积神经网络的车牌识别系统的完整代码示例。系统通过摄像头捕捉视频流,利用OpenCV进行图像处理(如灰度化、二值化、轮廓检测等)以定位车牌区域,并使用预训练的ONNX模型对车牌字符进行识别。之后,系统将识别到的车牌号与预先存储在CSV文件中的居民车牌数据库进行匹配,以判断车辆是否为小区居民所有,从而实现对外来车辆的收费管理。; 适合人群:对嵌入式系统开发、计算机视觉和深度学习感兴趣的开发者,尤其是有一定C++编程基础和技术背景的研究人员或工程师。; 使用场景及目标:①适用于社区、停车场等场所的车辆管理;②帮助开发者理解车牌识别的基本流程,包括图像预处理、车牌定位、字符识别以及与数据库的交互;③提供一个可扩展的基础框架,便于后续优化和功能增加。; 阅读建议:读者应确保具备基本的OpenCV库使用经验和C++编程能力。在学习过程中,建议同时参考相关文献资料,深入理解每个步骤背后的原理,并尝试调整参数或替换模型以提高识别精度。此外,还需准备相应的硬件设备(如摄像头)和软件环境(如安装OpenCV库),以便实际运行代码并观察效果。

    fregefffewfw

    efwfw

    基于S7-200 PLC与MCGS组态的智能交通灯控制系统设计与实现

    内容概要:本文详细介绍了利用西门子S7-200 PLC和MCGS组态软件构建智能交通灯控制系统的方法。首先阐述了系统的硬件配置,包括PLC的选择、IO分配、光电开关的应用等。接着深入探讨了梯形图编程的核心逻辑,如定时器嵌套、车流判断、紧急模式处理等。同时,还讲解了MCGS组态界面的设计要点,如动态指示灯、车流统计曲线、急停按钮等功能的实现。此外,文中分享了一些调试经验和优化技巧,如信号隔离、通信参数设置、夜间模式优化等。 适合人群:对PLC编程和工业自动化感兴趣的工程技术人员、高校相关专业学生。 使用场景及目标:适用于城市交通管理部门进行智能交通灯系统的规划与实施,旨在提高交通效率,减少拥堵。通过学习本文,读者能够掌握PLC编程的基本方法和MCGS组态软件的使用技巧。 其他说明:文中提供了详细的接线图、梯形图代码片段和组态界面截图,便于读者理解和实践。同时,作者还分享了许多实际操作中的注意事项和经验教训,有助于初学者少走弯路。

    毕业设计物联网实战项目基于物联网的气象台站系统.zip

    【项目资源】: 物联网项目适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。

    VB珠宝首饰店管理系统设计(源代码+系统+开题报告+答辩PPT).zip

    摘 要 面对信息时代的机遇与挑战,利用高科技手段来提高企业的管理水平无疑是一条行之有效的途径。利用计算机管理可以最大限度的发挥准确、快捷、高效等作用, 在越来越激烈的珠宝行业中,计算机管理技术对珠宝首饰公司的服务管理提供强有力的支持。因此,利用全新的计算机网络和珠宝首饰管理系统,已成为提高珠宝首饰公司的管理效率,改进服务水准的重要手段之一。本系统应用Visual Basic 6.0 中文版开发前台,用Microsoft Access 作后台服务器,采用客户机/服务器(C/S)管理思想来对珠宝首饰进销存管理。 关键词:管理水平, 管理效率,服务水准,珠宝首饰管理系统,客户机/服务器,管理思想

    稀疏分解方法在信号去噪中的应用研究_内含源码数据论文.zip

    稀疏分解方法在信号去噪中的应用研究_内含源码数据论文.zip

    2008年领导力发展年度报告

    本书由吉姆·诺埃尔和大卫·多蒂奇编辑,旨在探讨领导力发展领域的最新趋势和实践。书中不仅提供了领导力发展领域的历史回顾,还挑战了组织对领导力发展的战略视角,详细介绍了如何培养全球领导者,并提供了关于领导力发展方法、策略和系统、高潜力人才发展、高层管理参与、有效学习方法以及领导力指标等方面的深入案例研究和理论分析。此外,书中还探讨了创新的领导力发展方法,并对未来的发展趋势进行了展望。

    一种基于 QR 二维码的彩色二维码编码译码设计及其软件实现.zip

    一种基于 QR 二维码的彩色二维码编码译码设计及其软件实现.zip

    毕设单片机实战项目基于机智云和 esp8266-12F WIFI 模块的智能插座控制安卓APP.zip

    【项目资源】: 单片机项目适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。

    毕业设计物联网实战项目基于mqttd-centos7-v2.3.11.zip 配置的emqtt服务器,配套金大万翔物联网管理平台.zip

    【项目资源】: 物联网项目适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。

    【光子晶体模拟】基于COMSOL弱形式PDE的三维光子晶体能带结构计算与优化:电磁场切向连续性处理及带隙分析系统设计使用COMSOL

    内容概要:本文详细介绍了使用COMSOL Multiphysics的弱形式接口对三维光子晶体进行数值模拟的方法和技巧。文章通过具体的代码示例,解释了如何构建光子晶体的介电常数分布、设置弱形式PDE、处理电磁场切向连续性、应用Floquet周期边界条件以及特征值求解等关键步骤。特别强调了弱形式接口相比传统物理场接口的优势,如灵活性和对复杂边界的处理能力。文中还分享了一些实用的经验和注意事项,如布洛赫边界条件的实现、特征值求解器参数的优化配置以及网格划分的技巧。 适合人群:具备一定电磁学和数值模拟基础的研究人员或工程师,尤其是对光子晶体仿真感兴趣的读者。 使用场景及目标:①理解并掌握COMSOL弱形式接口在光子晶体仿真中的应用;②学习如何通过弱形式设置处理复杂的电磁场问题;③提高对光子晶体能带结构和带隙特性的认识;④掌握特征值求解和网格划分的最佳实践。 阅读建议:由于本文涉及较多的具体代码和物理概念,建议读者在阅读过程中结合COMSOL软件进行实际操作,同时查阅相关电磁理论书籍以加深理解。此外,对于文中提到的一些具体参数设置和技巧,可以通过尝试不同的配置来巩固所学知识。

    机械工程PT5000汽轮机滑动轴承系统模拟试验台:动态行为与振动控制研究

    内容概要:PT5000汽轮机滑动轴承系统模拟试验台是一个类似于电厂汽轮机发电机的缩小模型,旨在帮助用户获取汽轮机转子动态行为和滑动轴承油膜现象的实际经验,并研究振动控制方法。该试验台模拟两级涡轮机(低压和中压),每级转子两侧各有8个叶片,共计16个叶片。通过电机驱动而非涡轮发电机,可以进行启停机测试,识别共振现象。试验台还支持多种实验,如不平衡/现场动平衡、轴不对中实验、摩擦实验、油膜故障试验、轴颈轴承实验以及根据油压和温度进行的转子动力学试验。试验台配备了多种传感器和控制系统,包括电涡流传感器、温度传感器、压力传感器等,用于监测和记录实验数据。 适合人群:从事汽轮机设计、制造、维护的技术人员,以及相关专业的高校师生和研究人员。 使用场景及目标:①研究汽轮机转子的动态行为和滑动轴承的油膜现象;②进行振动控制方法的研究;③模拟再现油膜涡动转和油膜震荡,研究其控制条件;④进行不平衡、不对中、摩擦等常见故障的模拟和分析;⑤通过调整油压、温度和预加载力,研究轴的行为变化。 其他说明:该试验台不仅适用于教学和科研,还可用于工业领域的培训和技术验证。试验台具有丰富的配置和可选配件,可以根据具体需求进行定制。试验台的机械和电气参数详细列出,确保用户能够全面了解设备性能。

    知识图谱,电影领域,知识图谱构建

    电影类型知识图谱构建,包含相关数据集

    (源码)基于C++的Minimal BASIC解释器.zip

    # 基于C++的Minimal BASIC解释器 ## 项目简介 本项目是一个C++实现的Minimal BASIC解释器。该解释器能够解释并执行一些基本的BASIC语言命令,如赋值、打印、输入、条件跳转等。用户可以通过命令行交互地输入命令,或者编写一个按行数升序依次运行的大程序。 ## 项目的主要特性和功能 1. 解释执行能够解释并执行简单的BASIC语言命令。 2. 变量定义与赋值支持定义变量并为其赋值。 3. 打印输出支持将表达式的值打印到控制台。 4. 输入支持从用户获取输入值并赋值给变量。 5. 条件跳转支持基于条件的跳转语句。 6. 注释支持注释语句,使程序更加易读。 ## 安装使用步骤 1. 准备环境确保你的开发环境已经安装了C++编译器,如GCC。 3. 编译使用CMake工具编译源代码。 4. 运行编译成功后,运行可执行文件,即可与解释器交互。 ## 注意事项

    自适应神经进化编程解决暂态稳定性最优潮流问题

    本文提出了一种结合自适应进化编程(AEP)与神经网络的方法,用于解决暂态稳定性约束最优潮流(TSCOPF)问题。AEP在优化过程中能够自动调整种群大小,以获得TSCOPF问题的解决方案。神经网络的嵌入能够降低由暂态稳定性约束引起的计算负担。文章通过在IEEE 30节点系统上测试,使用两种不同的燃料成本函数,验证了AEP方法在搜索全局解方面的有效性,并且当结合神经网络后,显著提高了计算速度。此外,本文还对神经网络的架构进行了研究和讨论。

    毕设单片机实战项目基于ESP8266组建的智能安防系统.zip

    【项目资源】: 单片机项目适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。

Global site tag (gtag.js) - Google Analytics