samples
V2EX  ›  Java

第一次见以汉字命名的 Java 类

  •  
  •   samples · Aug 17, 2018 · 17667 views
    This topic created in 3002 days ago, the information mentioned may be changed or developed.

    想把简体转成繁体,找了下 util,ZHConverter,看了下源码还以为我的 ide 出问题了 😰

    如图: http://note.youdao.com/noteshare?id=6c2b1a2f774a9818d7e9080ff7bb2b7d

    91 replies  •  2018-10-19 05:01:17 +08:00
    dorothyREN
    dorothyREN
    Aug 17, 2018
    1
    很灵性
    inreality
    inreality
    Aug 17, 2018❤️1
    2
    易语言即视感
    boris1993
    boris1993
    Aug 17, 2018 via Android❤️1
    3
    怕不是易语言出身
    agagega
    agagega
    Aug 17, 2018 via iPhone
    4
    灵性
    molvqingtai
    molvqingtai
    Aug 17, 2018 via Android
    5
    不错,这样注释都可以省了
    LeeSeoung
    LeeSeoung
    Aug 17, 2018
    6
    应该是 E4J 开发的。
    harde
    harde
    Aug 17, 2018❤️1
    7
    讲真,我觉得很好啊。
    fuxiuyin
    fuxiuyin
    Aug 17, 2018 via iPhone
    8
    按理说,只要编译器啥的支持,并没有什么问题呀,变量名啥的不就是为了方便别人理解吗,并不在乎多敲几下键盘,反正 ide 都有自动补全
    tommy94
    tommy94
    Aug 17, 2018
    9
    想起了知乎上一个专栏...
    中文编程 https://zhuanlan.zhihu.com/c_140193266
    murmur
    murmur
    Aug 17, 2018❤️1
    10
    毕竟这类的功能对的起这个信仰
    hahastudio
    hahastudio
    Aug 17, 2018
    11
    看这个像是单字转换的?但难道不是应该按词转换么?
    zjsxwc
    zjsxwc
    Aug 17, 2018
    12
    抛开中文命名不说,代码写的有点烂
    cedoo
    cedoo
    Aug 17, 2018
    13
    英文 中文杂合, 好难受。
    NicholasYX
    NicholasYX
    Aug 17, 2018
    14
    牛逼 666
    vevlins
    vevlins
    Aug 17, 2018
    15
    @tommy94 仿佛看到义和团
    zhouyou457
    zhouyou457
    Aug 17, 2018
    16
    中英文混杂...看得我想死..
    yulitian888
    yulitian888
    Aug 17, 2018
    17
    看起来似乎还有短语替换功能???
    misaka19000
    misaka19000
    Aug 17, 2018
    18
    中文写代码敲的不累么
    rockyou12
    rockyou12
    Aug 17, 2018
    19
    说实话写有些业务的时候真的很想用中文命名,取名字就很难了,还要翻译……还要团队的人都能懂……
    不是很多编译器对非英文字符支持差,变量、类用中文我也觉得不是很大问题
    kaifeii
    kaifeii
    Aug 17, 2018❤️4
    21
    要是想这么弄,直接全用中文更好,最好语法语序也可以汉语话,可以用古语语法或者白话语法。这样可读性才能达到英文程序语言的水平。
    今有甲,又有乙,合之得丙。//快哉
    AllOfMe
    AllOfMe
    Aug 17, 2018
    22
    很有艺术感啊
    fly9i
    fly9i
    Aug 17, 2018
    23
    输入法切换能烦死吧?
    KeatingSmith
    KeatingSmith
    Aug 17, 2018
    24
    Java 8 就已经支持中文命名了呀。
    likai
    likai
    Aug 17, 2018 via Android
    25
    了解一下易语言作者新作品,火山
    lk1ngaa7
    lk1ngaa7
    Aug 17, 2018
    26
    function farmateQuestionInfo() 你怕不怕
    KgM4gLtF0shViDH3
    KgM4gLtF0shViDH3
    Aug 17, 2018
    27
    swift 完美支持中文和 emoji
    zsdroid
    zsdroid
    Aug 17, 2018❤️2
    28
    Mogugugugu
    Mogugugugu
    Aug 17, 2018
    29
    字符串为 null 居然不是 字符串为空- -
    bravecarrot
    bravecarrot
    Aug 17, 2018
    30
    难道打汉字不是比打英文麻烦吗
    s1E4GnZ4A2qGRyva
    s1E4GnZ4A2qGRyva
    Aug 17, 2018❤️12
    31
    多谢试用.
    在下是这个库的作者. 源码在: https://github.com/program-in-chinese/zhconverter
    也是"中文编程"github 讨论组( https://github.com/program-in-chinese ) 和知乎专栏 ( https://zhuanlan.zhihu.com/c_140193266) 的发起人

    回一下上面的:
    个人没有易语言实践经验. 只在探讨 IDE 对中文编程的支持时, 学习了一下它的官方文档: https://github.com/program-in-chinese/overview/issues/11
    这个库的目标主要是尝试用中文命名 API, 的确像上面提到的, 库的功能本身也适合中文命名.
    支持按词转换, 请参考测试用例: https://github.com/program-in-chinese/zhconverter/blob/master/test/com/github/nobodxbodon/zhconverter/%E7%AE%80%E7%B9%81%E8%BD%AC%E6%8D%A2%E6%B5%8B%E8%AF%95%E7%B1%BB.java
    代码定有可改进之处, 欢迎提 issue/PR
    Java 应该在 8 之前就支持 Unicode 命名了

    另外, 我们还汉化了 Junit4 接口: https://github.com/program-in-chinese/junit4_in_chinese
    passerbytiny
    passerbytiny
    Aug 17, 2018❤️1
    32
    凡是底层 unicode 的,变量名、方法名这种名称性的东西,都可以用中文,以及任何 unicode 范围内的文字。

    java 最晚 1.4 版本的时候,就支持中文变量名。但是编码规范第一条就是:不要用中文。

    我现在 junit 方法名,当分支方法特别多,用英文方法名又长又不直观的时候,回用中文方法名。
    shihunyewu
    shihunyewu
    Aug 17, 2018
    33
    还可以
    s1E4GnZ4A2qGRyva
    s1E4GnZ4A2qGRyva
    Aug 17, 2018
    34
    对了, 请用最新的 0.0.5 版, 改正了这个 bug: https://github.com/nobodxbodon/zhconverter/issues/5
    Lighfer
    Lighfer
    Aug 17, 2018❤️4
    35
    不支持中文命名,但是在业务性强的系统中,对于实体类和一些常量(仅限实体类、常量)还是推荐使用的,否则很多名词用英语很难表达清楚,关键是换个人来看这代码,看到统一串英文不一定能和中文环境下的名次对上号。
    比如我们开发的一个系统中,有大量这样的名词:
    1. 决定判决情况
    2. 判决情况
    3. 历次减刑情况
    4. 刑罚执行检查档案审查情况
    ...
    这些字段和其他系统是直接相关的(我们这个是辅助系统), 而且随着这个系统支持的业务范围不断的扩大,如果全都使用英文(缩写),维护起来简直就是灾难。
    diggerdu
    diggerdu
    Aug 17, 2018 via iPhone❤️1
    36
    @xuanwu 支持
    grewer
    grewer
    Aug 17, 2018
    37
    我还见过 cs, js, css 都是用中文的,其实都一样,但是打字是真的麻烦
    learnshare
    learnshare
    Aug 17, 2018
    38
    易语言还是挺好的,在英文普遍不好的环境下
    gnaggnoyil
    gnaggnoyil
    Aug 17, 2018
    40
    所以简繁转换你们为什么不用 OpenCC...
    easylee
    easylee
    Aug 17, 2018
    41
    代码里写中文没意义,那么多中文方法名、类名还没英文容易记住......

    我觉得最重要的是社区环境,易语言好就好在他的社区环境是中文,手册也是中文。

    前人遇见的问题后人再来检索方便许多,对外语不熟悉的人群没有语言障碍。
    s1E4GnZ4A2qGRyva
    s1E4GnZ4A2qGRyva
    Aug 17, 2018
    42
    @zsdroid 多谢演示. 这是我们尝试过中文命名的编程语言列表: https://www.v2ex.com/t/476999#reply0
    DixCouleur
    DixCouleur
    Aug 17, 2018 via Android
    43
    认识个写 VN.NET ,愣是用出了易语言的感觉
    anyele
    anyele
    Aug 17, 2018
    44
    怎么智能提示呢
    zonyitoo
    zonyitoo
    Aug 17, 2018
    45
    从代码质量可以看出来,坚持用中文编程的人的编码水平是什么样的
    s1E4GnZ4A2qGRyva
    s1E4GnZ4A2qGRyva
    Aug 17, 2018
    46
    @anyele 类似, 先输入第一个汉字.
    github 讨论组里有童鞋之前实现了输入法和 vscode 集成(JavaScript): https://github.com/program-in-chinese/overview/issues/11#issuecomment-320431936
    更近的实现是针对中文版 Typescript 的输入法集成(也是 vscode): https://github.com/program-in-chinese/overview/issues/53#issuecomment-360483892
    samples
    samples
    OP
    Aug 17, 2018
    47
    @xuanwu 谢谢原作者认真的解答, v2 真神奇哈哈。源码直接贴了出来,作者不要介意哈。
    samples
    samples
    OP
    Aug 17, 2018
    48
    @inreality 易语言很久远了吧那时我还没接触编程,嘤嘤嘤
    s1E4GnZ4A2qGRyva
    s1E4GnZ4A2qGRyva
    Aug 17, 2018
    49
    @samples 没事. 当时个人打算也是抛砖引玉. 期待更多更实用的中文 API 出现.
    再说一声, 0.0.5 版还是有点改进的. 欢迎多提意见建议.
    samples
    samples
    OP
    Aug 17, 2018
    50
    @fly9i 想想都蓝受。。。
    samples
    samples
    OP
    Aug 17, 2018
    51
    @kaifeii 文言文大佬出没
    samples
    samples
    OP
    Aug 17, 2018
    52
    @bestkayle var 😊 = "七夕快乐"??
    s1E4GnZ4A2qGRyva
    s1E4GnZ4A2qGRyva
    Aug 17, 2018
    53
    @samples 关于输入效率问题, 请参考"对在代码中使用中文命名的质疑与回应"中"中文输入太慢, 降低开发效率"一节
    https://zhuanlan.zhihu.com/p/30529835
    samples
    samples
    OP
    Aug 17, 2018
    54
    @xuanwu 找到了这个最新版了,一开始引用的 maven,按 demo 怎么也找不到 ZHConverter 看了下源码才知道中文命名的
    realpg
    realpg
    Aug 17, 2018
    55
    @Lighfer #35
    又一个给司法开发过系统的啊 握爪

    我曾经就纠结过一个重要统计字段怎么去命名:

    “已在非本监区但不是社会医院住院超过 7 天不超过 30 天的药品使用总金额”

    后来这个变量被我命名为 var009 注释看文档第 XXX 页
    samples
    samples
    OP
    Aug 17, 2018
    56
    @Lighfer 我们也在做法律方面的东西呢
    s546360316
    s546360316
    Aug 17, 2018
    57
    没毛病,这叫应对中国国情做出的改变,要想学习
    imikay
    imikay
    Aug 17, 2018
    58
    可读性还挺好
    Lighfer
    Lighfer
    Aug 17, 2018❤️1
    59
    @realpg 这种强业务性的东西,如果全用英文来表达的话,过段时间自己可能就看不懂了,更何况是以后维护换个人来看。所以还是需要具体问题具体分析,不推荐使用中文,但是必要的时候该用还是得用。
    kaedea
    kaedea
    Aug 17, 2018 via Android
    60
    长见识
    ala2008
    ala2008
    Aug 17, 2018
    61
    脑子转不过来。。
    twotiger
    twotiger
    Aug 17, 2018
    62
    我知道 python 和 javascript 都可以支持中文变量,原来 java 也可以啊,挺好玩的
    metrxqin
    metrxqin
    Aug 17, 2018
    63
    “已在非本监区但不是社会医院住院超过 7 天不超过 30 天的药品使用总金额”,此时应该发明新的概念名词。

    如果没有人发明 “电脑”这个名词,我们必须像这样描述“ CPU 执行运算,内存辅以贮藏数据的,通过各种外围设备完成人机交互的电子设备”。
    metrxqin
    metrxqin
    Aug 17, 2018
    64
    vindurriel
    vindurriel
    Aug 17, 2018 via iPhone
    65
    const 和 enum 之类的比较适合 比如 八荣八耻 四个自信 啥的 翻译起来老费劲 比用拼音强 variable 就算了 有一种听外企白领讲洋泾浜的感觉
    rockyou12
    rockyou12
    Aug 17, 2018
    66
    @metrxqin 想法很美,但实际业务这种玩意可能几十几百个,各个都要发明不是成语言学家了,而且后面维护代码的人要怎么去理解你发明的名称,去查你编的字典嘛?到最后也还是成了查文档、看注释算球
    realpg
    realpg
    Aug 17, 2018
    67
    @metrxqin #63
    这种名词有上百个……
    Lighfer
    Lighfer
    Aug 17, 2018
    68
    @metrxqin 这种和业务强相关的情况不赞成发明一些新的名词来作解释,量是一个问题,更关键的是无法直接体现出业务方面的东西,而对于后续的维护、扩展来说,如果一个变量 /字段 的业务相关性不够清晰明了的话,会需要花更多的时间来明确,甚至可能到最后都弄错了,而且随着时间的的推移、人员的替换,出现错误的概率会不断升高。
    dhssingle
    dhssingle
    Aug 17, 2018
    69
    几年前在 CSDN 上看到的,全中文编程
    https://bbs.csdn.net/topics/380159364
    感受一下


    ```

    遍历器<登录信息>.计数遍历(_详细信息集合).从(0).到(_详细信息集合.长度()).每隔(1).执行((当前行索引, 登陆信息) =>
    {
    判断.如果是(XXX).则(() =>
    {
    判断.如果是(YYY).则(() =>
    {
    表格.行(当前行索引).背景色设为(Color.Gray);
    });
    }).否则(() =>
    {
    判断.如果是(ZZZ).则(() =>
    {
    判断.如果是(KKK).则(() =>
    {
    表格.行(当前行索引).背景色设为(Color.Gray);
    });
    });
    });
    });


    ```
    RqPS6rhmP3Nyn3Tm
    RqPS6rhmP3Nyn3Tm
    Aug 17, 2018
    70
    只要看得懂,用 emoji 我的觉得 OK
    MonoLogueChi
    MonoLogueChi
    Aug 17, 2018 via Android
    71
    只要编译器不报错就行,用户不会关心你的变量名是啥
    codehz
    codehz
    Aug 17, 2018
    72
    我记得有一种混淆技术就是直接把标识符替换成汉字(特别是那些在扩展区的汉字),当时很多工具都不支持处理这样的 class 文件(当然现在都支持了,就没啥用了)
    blanu
    blanu
    Aug 17, 2018 via iPhone
    73
    我只能说,无感,不支持也不反对
    s1E4GnZ4A2qGRyva
    s1E4GnZ4A2qGRyva
    Aug 18, 2018
    74
    @Lighfer @realpg @vindurriel 同意越是业务性强的部分中文命名越有优势. 个人实践过程( https://www.v2ex.com/t/477109 )中, 多数变量或多或少带有业务语义.
    个人感觉, 与业务语义无关的变量名(或者部分)多数和语言 /框架本身相关, 包括很多核心类中的术语(如 logger, collections, controller 等等), 这些经常一时想不到合适的对应中文. 最近开始的这个项目就是为了辅助解决这个问题: https://zhuanlan.zhihu.com/p/42100391
    这篇在纯算法中用中文命名, 个人认为并非一无是处: https://zhuanlan.zhihu.com/p/33850923
    applehater
    applehater
    Aug 18, 2018
    75
    @bravecarrot 不知道俄罗斯人用西里尔字母写代码的多不多
    s1E4GnZ4A2qGRyva
    s1E4GnZ4A2qGRyva
    Aug 18, 2018❤️1
    76
    @applehater @li1215101 这个 2017 年的 quora 答案( http://qr.ae/TUN8ea )提到西门子(德)/爱立信(瑞典)内部有尽量用母语命名的 C/C++项目. 以及布拉格看到的一本编程书也是用母语命名.
    中文命名只是母语命名的一种. 最初在编程语言中添加支持 Unicode 的功能, 也应该有各个非英语母语国家开发者的推动力量.
    leido
    leido
    Aug 18, 2018 via Android
    77
    少见多怪,日本人经常这样干
    s1E4GnZ4A2qGRyva
    s1E4GnZ4A2qGRyva
    Aug 18, 2018
    78
    @leido 请问可以分享一下项目细节吗? 之前也想探寻这样的开源项目, 但在很有限的和日本开发者的交流里, 都提到多数开发者还是用英语命名. 即使"抚子"日语编程语言的作者, 最后还是用了英文命名.
    wolfie
    wolfie
    Aug 18, 2018
    79
    上次项目经理调试接口,返回参数很长而且他英文不好,然后就把字段全部改成中文了。
    jadeity
    jadeity
    Aug 18, 2018
    80
    体会到了母语英语国家的人是真的好理解代码
    AntiGameZ
    AntiGameZ
    Aug 18, 2018
    81
    之前做一些特定行业的项目,专有名词特别多,而且都是那种普通人一眼看上去完全不知道什么意思的名词。但是考虑到和客户更好的沟通,又不能忽视这些名词的存在,英文命名需要纠结很久并且基本上不可能达到 100%准确翻译,回头客户那边看到这些变量还得解释好久。

    遂弄了个示例代码,直接使用中文用做变量名,个人体验良好,程序也没有任何问题。

    奈何甲方也是程序员出生,看到源代码第一时间就怒了,强烈要求改回英文名……
    idtaanlcoe
    idtaanlcoe
    Aug 18, 2018 via Android
    82
    难受
    leido
    leido
    Aug 18, 2018 via Android❤️2
    83
    @xuanwu 没记错的话,日本开发 Java 用罗马音做方法名,假名做变量名(可能记反),所以对日外包要求日语 N2
    s1E4GnZ4A2qGRyva
    s1E4GnZ4A2qGRyva
    Aug 18, 2018 via Android
    84
    @AntiGameZ 呵呵 希望随着中文命名的逐渐成熟和普及 包括编码 /命名规范的一致 这样的落花有意流水无情情况会少一些
    NoDocCat
    NoDocCat
    Aug 18, 2018
    85
    好的, 我注意, 不用汉字了.
    下次写代码, 我用日文怎么样? 或者 Emoji 表情, 你更喜欢哪一个?
    fuyufjh
    fuyufjh
    Aug 19, 2018 via Android
    86
    反对在代码中用中文,尤其是开源项目。如果做给自己用的,您随意。要是做给别人用的,为什么不尽量多给一些人用呢?

    英语是个包容度很高的语言,对于非 native speaker,你只要用最简单的单词语法就好了,大家都会接受的
    Kyle18Tang
    Kyle18Tang
    Aug 19, 2018❤️1
    87
    @fly9i 写代码的中文输入法标点可以设置为英文的
    s1E4GnZ4A2qGRyva
    s1E4GnZ4A2qGRyva
    Aug 19, 2018
    88
    @fuyufjh
    库 /API 使用什么语言命名应是库开发者的选择. 详请见"中文编程"知乎专栏"Python3 选择支持非 ASCII 码标识符的缘由"一文.
    另有"对在代码中使用中文命名的质疑与回应"中"不利于非中文编程者贡献"一节
    fuyufjh
    fuyufjh
    Aug 20, 2018
    89
    @xuanwu
    1. 语言本身有义务支持 unicode,但这和鼓励是两码事。比如,你可以把某个函数命名为 `AN_AWESOME_FUNCTION`,编译器不会 warning,然而别人会指责你:这样不符合 convention
    2. 结巴分词这种特例就不要拿出来说了,绝大多数开源项目都是和语言无关的。我开源的目的也不是“吸引外国贡献者”,我只是希望这个代码能帮到更多的人
    s1E4GnZ4A2qGRyva
    s1E4GnZ4A2qGRyva
    Aug 20, 2018
    90
    @fuyufjh
    > 语言本身有义务支持 unicode,但这和鼓励是两码事

    之前在 Python 官方文档翻译组中建议把中文版的代码中文化, Doc-SIG 的日本翻译组长也有类似回应: 'I think "enabling" to do it and "encouraging" to do it have different bar.' 个人认为这是见仁见智. 感觉这个说法也适用于不少其他的编程语言功能特性.

    > 你可以把某个函数命名为 `AN_AWESOME_FUNCTION`

    我们的出发点是增强代码可读性, 因此会避免使用此类违背可读性的命名方式.
    如果中文命名比起相对应的英文命名明显更不可读, 在个人体验中, 更多的情况是由于中文命名尚有改进空间.
    至于 convention, 现今的代码风格规范基本都源于英语为母语的公司 /开发者. 罔顾具体使用环境而视非英文命名为禁区, 个人认为是固步自封.

    > 绝大多数开源项目都是和语言无关的。我开源的目的也不是“吸引外国贡献者”,我只是希望这个代码能帮到更多的人

    在上文中也提到这与项目目的和作者初衷有关. 从项目总量上来说, 闭源项目远多于开源的, 单人的远多于多人的, 这是个人的估计. 闭源 /单人的项目, 也许更适合中文命名. 至于开源项目, 就像 PEP 3131 提到 API 命名的问题, 就由创作者来自行选择吧.
    s1E4GnZ4A2qGRyva
    s1E4GnZ4A2qGRyva
    Oct 19, 2018
    91
    @leido 刚发现了一本在例程中使用日语命名的编程书籍"初めてのJavaScript 第 3 版". 译者提到(2016 年 12 月):
    これからは、日本国内をターゲットにした開発では徐々に日本語識別子が使われることになるのでしょう
    在线翻译如下:
    "今后,以日本国内为目标的开发会逐渐使用日语标识符吧"

    请问日本业界是出台了什么命名规范推广日语命名吗?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4835 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 256ms · UTC 07:28 · PVG 15:28 · LAX 23:28 · JFK 02:28
    ♥ Do have faith in what you're doing.