V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
ddup
V2EX  ›  问与答

代码中用中文命名很棒啊

  •  1
     
  •   ddup · 2019-11-14 10:27:17 +08:00 · 5610 次点击
    这是一个创建于 1839 天前的主题,其中的信息可能已经有所发展或是发生改变。

    上次一个专有名次不知如何取名,中文变量命名的帖子,这次这个,来自“狗屁不通文章生成器”,全程中文,看代码像有像是领导在像手下发话,脑海里面自动出现语音版本,或者用语音控制计算机的感受。

    面向声音编程。

    虽然本人从没用中文命名过变量,但是觉得很棒。

    https://github.com/menzi11/BullshitGenerator

    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    
    import os, re
    import random,readJSON
    
    data = readJSON.读 JSON 文件("data.json")
    名人名言 = data["famous"] # a 代表前面垫话,b 代表后面垫话
    前面垫话 = data["before"] # 在名人名言前面弄点废话
    后面垫话 = data['after']  # 在名人名言后面弄点废话
    废话 = data['bosh'] # 代表文章主要废话来源
    
    xx = "学生会退会"
    
    重复度 = 2
    
    def 洗牌遍历(列表):
        global 重复度
        池 = list(列表) * 重复度
        while True:
            random.shuffle(池)
            for 元素 in 池:
                yield 元素
    
    下一句废话 = 洗牌遍历(废话)
    下一句名人名言 = 洗牌遍历(名人名言)
    
    def 来点名人名言():
        global 下一句名人名言
        xx = next(下一句名人名言)
        xx = xx.replace(  "a",random.choice(前面垫话) )
        xx = xx.replace(  "b",random.choice(后面垫话) )
        return xx
    
    def 另起一段():
        xx = ". "
        xx += "\r\n"
        xx += "    "
        return xx
    
    if __name__ == "__main__":
        xx = input("请输入文章主题:")
        for x in xx:
            tmp = str()
            while ( len(tmp) < 6000 ) :
                分支 = random.randint(0,100)
                if 分支 < 5:
                    tmp += 另起一段()
                elif 分支 < 20 :
                    tmp += 来点名人名言()
                else:
                    tmp += next(下一句废话)
            tmp = tmp.replace("x",xx)
            print(tmp)
    

    let 后面垫话 = [
        "这不禁令我深思。 ",
        "带着这句话,我们还要更加慎重的审视这个问题: ",
        "这启发了我, ",
        "我希望诸位也能好好地体会这句话。 ",
        "这句话语虽然很短,但令我浮想联翩。 ",
    ]
    
    let 前面垫话 = [
        "曾经说过",
        "在不经意间这样说过",
    ]
    
    function 随便取一句(列表){
        let 坐标 = Math.floor( Math.random() * 列表.length );
        return 列表[坐标];
    }
    
    function 随便取一个数(最小值 = 0,最大值 = 100){
        let 数字 = Math.random()*( 最大值 - 最小值 ) + 最小值;
        return 数字;
    }
    
    function 来点名人名言(){
        let 名言 = 随便取一句(名人名言)
        名言 = 名言.replace("曾经说过", 随便取一句(前面垫话) )
        名言 = 名言.replace("这不禁令我深思", 随便取一句(后面垫话) )
        return 名言
    }
    
    function 来点论述(){
        let 句子 = 随便取一句(论述);
        句子 = 句子.replace(RegExp("主题", "g"),主题);
        return 句子;
    }
    
    function 增加段落(章节){
        if(章节[章节.length-1] === " "){
            章节 = 章节.slice(0,-2)
        }
        return "  " + 章节 + "。 "
    }
    
    function 生成文章(){
        let 文章 = []
        for(let 空 in 主题){
            let 章节 = "";
            let 章节长度 = 0;
            while( 章节长度 < 6000 ){
                let 随机数 = 随便取一个数();
                if(随机数 < 5 && 章节.length > 200){
                    章节 = 增加段落(章节);
                    文章.push(章节); 
                    章节 = "";
                }else if(随机数 < 20){
                    let 句子 = 来点名人名言();
                    章节长度 = 章节长度 + 句子.length;
                    章节 = 章节 + 句子;
                }else{
                    let 句子 = 来点论述();
                    章节长度 = 章节长度 + 句子.length;
                    章节 = 章节 + 句子;
                }
            }
            章节 = 增加段落(章节);
            文章.push(章节);
        }
        return 文章.join("\n");
    }
    
    console.log(生成文章())
    
    第 1 条附言  ·  2019-11-14 13:27:28 +08:00
    我知道写起来肯定不方便,而且智能提示也不方便,不能打几个字母就出现智能提示,只是看起来很棒。
    44 条回复    2020-08-03 19:53:03 +08:00
    miaomiao888
        1
    miaomiao888  
       2019-11-14 11:28:53 +08:00
    E 语言:听说有人在夸我
    helionzzz
        2
    helionzzz  
       2019-11-14 11:34:12 +08:00   ❤️ 3
    中英文和全半角符号切换不累么。。
    coderluan
        3
    coderluan  
       2019-11-14 11:34:27 +08:00   ❤️ 1
    虽然本人从没用中文命名过变量,但是觉得很棒。

    要不楼主先用用试试再说,毕竟看和写是两回事。
    misaka19000
        4
    misaka19000  
       2019-11-14 11:35:44 +08:00
    我觉得不行
    hkitdog
        5
    hkitdog  
       2019-11-14 12:02:36 +08:00 via iPhone
    那为什么不用易话言,Python 和 C 的库全都可以直连调用
    hkitdog
        6
    hkitdog  
       2019-11-14 12:02:52 +08:00 via iPhone
    总页数 = 431
    ' 标准输出 (1, “开始页数:”)
    ' 当前页 = 标准输入 ()
    ' i = 到整数 (当前页)
    .计次循环首 (总页数, i)
    写到文件 (取运行目录 () + “/confuig.ini”, 到字节集 (“当前页:” + 到文本 (i)))
    源代码 = 网页_访问 S (“http://www.okzy.me/?m=vod-index-pg-” + 到文本 (i) + “.html”, 0, , , )
    文本_取中间_批量 (源代码, #目的地址 1, #目的地址 2, 目的地址, , , )
    .计次循环首 (取数组成员数 (目的地址), j)
    详细页地址 = 网页_访问 S (“http://www.okzy.me” + 目的地址 [j], 0, , , )
    ' 调试输出 (详细页地址)
    标题 = 文本_取出中间文本 (详细页地址, #标题 1, #标题 2, , )

    导演 = 文本_取出中间文本 (详细页地址, #导演 1, #导演 2, , )

    主要演员 = 文本_取出中间文本 (详细页地址, #主演 1, #主演 2, )

    类型 = 文本_取出中间文本 (详细页地址, #类型 1, #类型 2, )

    地区 = 文本_取出中间文本 (详细页地址, #地区 1, #地区 2, )

    剧情介绍 = 文本_取出中间文本 (详细页地址, #剧情介绍 1, #剧情介绍 2, )

    ' 播放链接 = 文本_取出中间文本 (详细页地址, #影片地址 1, #影片地址 2, )
    封面地址 = 文本_取出中间文本 (详细页地址, #封面 1, #封面 2, )
    调试输出 (文本_取出中间文本 (详细页地址, #KuyunBox1, #KuyumBox2, ))
    文本_取中间_批量 (文本_取出中间文本 (详细页地址, #KuyunBox1, #KuyumBox2, ), #影片地址 1, #影片地址 2, 播放链接, )
    播放链接汇总 = “”
    .计次循环首 (取数组成员数 (播放链接), k)
    播放链接汇总 = 播放链接汇总 + “<a href=” + 播放链接 [k] + “>” + 播放链接 [k] + “</a> <br />”
    ' 调试输出 (“名称:” + 标题 + “链接:” + 播放链接 [k])
    .计次循环尾 ()





    标准输出 (1, #换行符 + “电影名称:” + 标题 + #换行符 + “导演:” + 导演 + #换行符 + “主要演员:” + 主要演员 + #换行符 + “类型:” + 类型 + “地区:” + 地区 + #换行符 + “剧情介绍:” + 封面地址 + #换行符 + #换行符)




    调试输出 (标题)
    调试输出 (导演)
    调试输出 (主要演员)
    调试输出 (类型)
    调试输出 (地区)
    调试输出 (剧情介绍)
    调试输出 (封面地址)
    调试输出 (播放链接汇总)
    i = i + 1
    .计次循环尾 ()


    .计次循环尾 ()
    wysnylc
        7
    wysnylc  
       2019-11-14 12:16:55 +08:00   ❤️ 3
    其实我觉得中文化数学也有搞头!
    szyp
        8
    szyp  
       2019-11-14 12:35:04 +08:00 via iPhone
    @coderluan 哈哈 敲一个中文变量和一个英文变量手指的差别可不小
    gabon
        9
    gabon  
       2019-11-14 13:17:37 +08:00 via Android
    看瞎了。。
    ddup
        10
    ddup  
    OP
       2019-11-14 13:27:41 +08:00
    @coderluan #3 我知道写起来肯定不方便,而且智能提示也不方便,不能打几个字母就出现智能提示,只是看起来很棒。
    love
        11
    love  
       2019-11-14 13:46:22 +08:00
    只能说明你英文太差
    建议把 PC 和手机的系统全搞成英文找找感觉,回头就会发现这程序有多尬
    glaucus
        12
    glaucus  
       2019-11-14 13:47:46 +08:00
    看起来也并不棒,要么全中文,我这种喜欢在心理读代码的看到这种中英混杂的就跟听到某些人中英混杂和我交流一样难受
    NjcyNzMzNDQ3
        13
    NjcyNzMzNDQ3  
       2019-11-14 13:53:24 +08:00   ❤️ 2
    汉语写代码,遇到方言岂不是很有趣

    if(磨叽){
    sleep(ture);
    }

    if(贼多 >= 贼少){
    return true;
    }

    if(不着调){
    return "没正经的";
    }

    if(你瞅啥){
    echo "瞅你咋的";
    }
    geelaw
        14
    geelaw  
       2019-11-14 14:07:12 +08:00 via iPhone
    足以见得 V2EX 自作聪明加空格的算法是多么不小心。由于这个算法,“读 JSON 文件”中间被加了空格,因此失去了作为标识符的资格。
    mokeyjay
        15
    mokeyjay  
       2019-11-14 14:10:45 +08:00
    @ddup #10 拼音首字母了解一下
    joiejia
        16
    joiejia  
       2019-11-14 14:46:53 +08:00
    第一次看懂代码(
    bk201
        17
    bk201  
       2019-11-14 14:49:06 +08:00
    看的累,语言容易歧义
    linxl
        18
    linxl  
       2019-11-14 14:51:33 +08:00
    王的富尔
    ddup
        19
    ddup  
    OP
       2019-11-14 15:25:11 +08:00 via Android
    @mokeyjay 拼音首字母绝对不行😰
    ddup
        20
    ddup  
    OP
       2019-11-14 15:27:18 +08:00 via Android
    @geelaw 原来 V2 还会给英文中文间自动加空格
    saltedFish666
        21
    saltedFish666  
       2019-11-14 15:32:12 +08:00
    看得我好尬
    ungrown
        22
    ungrown  
       2019-11-14 16:57:53 +08:00 via Android
    本来就是个好方法,有时候直接用中文命名是最直观最准确的方法,没有之一!

    至于你说的缺点,输入不方便,这我就要批评你缺心眼了:你在中文外面加上简短的英文前缀,不就可以在英文输入状态下自动补全了吗?
    LancerEvo
        23
    LancerEvo  
       2019-11-14 17:24:25 +08:00
    我是中国人 但我碰到有中文注释的代码的时候从来不看
    HolmLoh
        24
    HolmLoh  
       2019-11-14 17:51:15 +08:00
    看起来很爽,爽完记得改回去
    ares586
        25
    ares586  
       2019-11-14 17:59:03 +08:00   ❤️ 2
    我觉得并不尬啊,蛮好玩的。如果是自己写一写脚本,反而不用加注释了。。。
    wolfan
        26
    wolfan  
       2019-11-14 18:06:12 +08:00
    分明就是想省去写注释的活~
    ddup
        27
    ddup  
    OP
       2019-11-14 18:07:27 +08:00 via Android
    @ungrown 哈哈 中西结合
    TomatoYuyuko
        28
    TomatoYuyuko  
       2019-11-14 18:07:34 +08:00
    的确 最麻烦的是输入法来回切换,浪费很多时间
    raffaellolin
        29
    raffaellolin  
       2019-11-14 18:25:38 +08:00 via Android
    可以,但是没必要
    KeyboardManAnAn
        30
    KeyboardManAnAn  
       2019-11-14 19:17:24 +08:00
    很棒,是时候掀起一波中文编程的革命了🐶🐶🐶
    ipwx
        31
    ipwx  
       2019-11-14 19:19:49 +08:00
    有些场景下面用中文变量,我拍手称赞。因为那是最恰当的方案。

    楼主这个场景吗,呕……
    orzorzorzorz
        32
    orzorzorzorz  
       2019-11-14 19:24:05 +08:00   ❤️ 1
    中文变量一般都是用在相当专业的名词里面的,比如“年后出入库计划表”这种很难翻成英文的。对于能翻、翻完意思确定、而且大家都是这么翻的名词,用中文就会有内味儿了。
    其他实例用的变量姑且不表,但最大值最小值这些都是有惯有翻译的。
    gwybiaim
        33
    gwybiaim  
       2019-11-14 19:34:32 +08:00
    @TomatoYuyuko 输入法支持标点符号始终半角的
    zunceng
        34
    zunceng  
       2019-11-14 19:42:06 +08:00
    看和写是两回事 注释写中文都不习惯 懒得切输入法
    YenvY
        35
    YenvY  
       2019-11-14 20:03:39 +08:00   ❤️ 1
    切换输入法那点时间你们都心疼?真的假的
    ytmsdy
        36
    ytmsdy  
       2019-11-14 20:51:27 +08:00 via iPhone
    我觉得我会被中英文切换搞奔溃的!
    EscYezi
        37
    EscYezi  
       2019-11-14 20:58:27 +08:00 via iPhone
    @YenvY #34 不心疼,手疼🤣
    hyy1995
        38
    hyy1995  
       2019-11-14 21:05:39 +08:00
    我看哭了。。。真没必要
    cmdOptionKana
        39
    cmdOptionKana  
       2019-11-14 21:31:45 +08:00   ❤️ 7
    本来中国人用中文变量是好处远大于坏处的,但是,偏见是可怕的,比如有人说:

    “中英文和全半角符号切换不累么” ... 偏见, 输入法本来就可以设置一直半角

    “我觉得不行” ... 严重偏见, 连莫须有的罪名都懒得加了

    “敲一个中文变量和一个英文变量手指的差别可不小” ... 偏见, 事实上配合中文输入法的自动自造词功能, 中文变量也很方便输入

    “看得我好尬” ... 偏见, 尬的唯一原因只能是偏见了, 不然为啥尬呢

    “我是中国人 但我碰到有中文注释的代码的时候从来不看” ... 偏见, 中文注释招谁惹谁了?

    “最麻烦的是输入法来回切换,浪费很多时间” ... 偏见, 敲字的时间本来就不重要 (要说有问题, 其实是注意输入法状态的心理负担, 而不是时间)

    “可以,但是没必要” ... 偏见, 对于全英文的代码, 你会加上一句 "没有必要" 吗, 不会, 这种区别对待的唯一原因就是偏见

    中文变量名是有它自己的问题, 但是, 在反对中文变量名的声音之中, 偏见的含量也实在高的惊人.
    zmqking
        40
    zmqking  
       2019-11-15 08:14:41 +08:00 via iPhone   ❤️ 1
    因为这个是主要是美帝发明的,我一直好奇,他们看代码是什么感觉,我现在感觉到了^_^。试想下如果这玩意儿是我们发明的,不就是这样的效果吗?
    ywjdlq
        41
    ywjdlq  
       2019-11-15 08:58:45 +08:00
    突然就看不懂了
    CodeEncryption
        42
    CodeEncryption  
       2019-11-15 15:40:52 +08:00
    如果符号也能全角,不用切换全半角我想我会尝试的
    xuanwu
        43
    xuanwu  
       2019-12-01 13:10:45 +08:00   ❤️ 1
    更多中文命名标识符的开源项目: https://github.com/program-in-chinese/overview#%E7%BB%84%E5%86%85%E6%B4%BB%E8%B7%83%E9%A1%B9%E7%9B%AE
    Java, Python,C++,TS 等等
    Mindjet
        44
    Mindjet  
       2020-08-03 19:53:03 +08:00
    挺有意思的,不过生态可能不怎么好,比如,如果这个项目是与别人合作的或者开源的,看到你用的中文,很多人都吓退了。如果有一天,美国小学中文是必修的,也许会可以。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3180 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 13:25 · PVG 21:25 · LAX 05:25 · JFK 08:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.