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

代码中用中文命名很棒啊

  •  1
     
  •   ddup · 25 天前 · 3476 次点击

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

    面向声音编程。

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

    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 条附言  ·  25 天前
    我知道写起来肯定不方便,而且智能提示也不方便,不能打几个字母就出现智能提示,只是看起来很棒。
    43 回复  |  直到 2019-12-01 13:10:45 +08:00
        1
    miaomiao888   25 天前
    E 语言:听说有人在夸我
        2
    helionzzz   25 天前   ♥ 3
    中英文和全半角符号切换不累么。。
        3
    coderluan   25 天前   ♥ 1
    虽然本人从没用中文命名过变量,但是觉得很棒。

    要不楼主先用用试试再说,毕竟看和写是两回事。
        4
    misaka19000   25 天前
    我觉得不行
        5
    hkitdog   25 天前 via iPhone
    那为什么不用易话言,Python 和 C 的库全都可以直连调用
        6
    hkitdog   25 天前 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
    .计次循环尾 ()


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

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

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

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

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

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

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

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

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

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

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

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

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

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

    中文变量名是有它自己的问题, 但是, 在反对中文变量名的声音之中, 偏见的含量也实在高的惊人.
        40
    zmqking   25 天前 via iPhone
    因为这个是主要是美帝发明的,我一直好奇,他们看代码是什么感觉,我现在感觉到了^_^。试想下如果这玩意儿是我们发明的,不就是这样的效果吗?
        41
    ywjdlq   24 天前
    突然就看不懂了
        42
    CodeEncryption   24 天前
    如果符号也能全角,不用切换全半角我想我会尝试的
        43
    xuanwu   8 天前
    更多中文命名标识符的开源项目: 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 等等
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2727 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 41ms · UTC 00:49 · PVG 08:49 · LAX 16:49 · JFK 19:49
    ♥ Do have faith in what you're doing.