代码中用中文命名很棒啊

2019-11-14 10:27:17 +08:00
 ddup

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

面向声音编程。

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

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(生成文章())
5383 次点击
所在节点    问与答
44 条回复
saltedFish666
2019-11-14 15:32:12 +08:00
看得我好尬
ungrown
2019-11-14 16:57:53 +08:00
本来就是个好方法,有时候直接用中文命名是最直观最准确的方法,没有之一!

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

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

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

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

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

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

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

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

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

中文变量名是有它自己的问题, 但是, 在反对中文变量名的声音之中, 偏见的含量也实在高的惊人.
zmqking
2019-11-15 08:14:41 +08:00
因为这个是主要是美帝发明的,我一直好奇,他们看代码是什么感觉,我现在感觉到了^_^。试想下如果这玩意儿是我们发明的,不就是这样的效果吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/619420

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX