V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
这是一个专门讨论 idea 的地方。

每个人的时间,资源是有限的,有的时候你或许能够想到很多 idea,但是由于现实的限制,却并不是所有的 idea 都能够成为现实。

那这个时候,不妨可以把那些 idea 分享出来,启发别人。
jesse6679
V2EX  ›  奇思妙想

脑洞大开:能否建设一个帮助程序员起变量名的垂直搜索引擎

  •  1
     
  •   jesse6679 · 2015-08-10 10:09:13 +08:00 · 4476 次点击
    这是一个创建于 3380 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本帖是从《放过那些程序猿,写文档的事让我们来》衍生出来的,因为原帖楼已经歪了,所以专门新辟一个帖子讨论。

    说到被变量起名,还真是一件麻烦的事情。如果变量名起得乱七八糟,代码的可读性会下降很多。
    如果用英文全拼吧,表意是很清晰,但是变量名会超长;如果汉语拼音缩写吧,变量名是短了,但总感觉土的掉渣;如果用随机字母拼成的变量名吧,还得写注释记录变量含义,如果漏写了注释,一个月后自己也休想看得懂了;还有变量风格到底是用驼峰命名法,还是用下划线分割,常常很纠结。

    所以,作为一个有代码洁癖的码农,每次写程序的时候都要为给变量起名伤透脑筋。最不能忍受的是写HTML和CSS,每个DIV都得起一个名,弄的不好和Bootstrap里的重名,页面就各种错乱斯巴达了。

    以前还以为只有我有这种小众烦恼的,在上一个帖子里面也有好几个人提出来,也有类似的“变量命名强迫癌”,原来我并不孤独。

    我在考虑,有没有可能建设一个专门帮助程序员给变量起名字的垂直搜索引擎,当程序员输入心中的关键字后,搜索引擎给出与此相关的热门变量名称。
    搜索引擎的模式大致上可以分为两类:
    1、通过爬虫爬取github网站上的开源代码,搜集其中的海量变量名,然后通过数据清洗、分析、聚类提取出最热门、最常用、最优质、表意最清晰的变量名称供搜索用。
    2、把常见的变量命名规则做成搜索策略,来自动构建变量名
    3、记录搜索后,程序员选中了那些变量名,只要用户足够多,就能够统计出变量名中的高频词汇。

    当然要做这样一个东西,难度是相当大的,仅人才要求这一项就很难搞定。开发团队需要具备开发爬虫经验,同时还要精通搜索算法,要找到这样的开发者谈何容易。如果要做的话,只能把这个项目做成开源项目,零门槛吸引各路技术极客的加入,远程线上协作。

    还有一个难题就是投入产出比。需要投入这么大的开发量做出来的产品,到底有多少程序员会用?是不是真的能解决他们的问题?我心里面没有底。

    以上只是我个人脑洞大开的想法,欢迎大家和我争论。
    如果你也有为变量起名的烦恼,请留言+1,我想统计一下需求。
    如果你有更高明的解决方案,欢迎留言论战。
    如果你是爬虫、数据分析和搜索算法界的高人大牛,欢迎和我联系,进一步讨论: [email protected]

    31 条回复    2016-09-22 22:58:34 +08:00
    IamI
        1
    IamI  
       2015-08-10 10:35:06 +08:00
    在有现代 IDE 的自动提示的前提下,我是觉得变量名长就由它长吧,再长也没什么所谓…
    wezzard
        2
    wezzard  
       2015-08-10 10:41:18 +08:00   ❤️ 1
    i_think_a_variable_name_could_not_be_too_long_because_mother_has_said_that_it_is_not_good_that_a_vaiable_is_fucking_long.
    lingo233
        3
    lingo233  
       2015-08-10 10:45:27 +08:00
    那就面向汉字编程吧
    ariestiger
        4
    ariestiger  
       2015-08-10 10:54:45 +08:00   ❤️ 1
    用英文全称 + 约定俗成的简写足矣。
    如果是面向对象语言,一个真正的类(不是那种只有静态方法的 helper, util 类)其实, 一个方法就是一层 namespace,实例变量,方法变量结合这些 namespace context 就可以很好的理解了。
    变量名长根本不是个问题,至少不是个多起眼的问题,spring 里面四五个单词,二三十个字符的类名变量多了,但这只会让代码更容易理解。
    使用拼音,拼音首字母简写是要绝对禁止的,如果不禁止,那我就要离职。
    真正在起名时面临的问题是,英文太差,找不到合适的词来给变量命名,随意使用缩写,缩写简写混用等。
    比如,刚刚十分钟前,我还和人讨论数据库结构,起的一堆表名已经让人头疼,表的权限还没给我,我还没去细看这些列名是怎么样的,但估计也是乱成一坨:
    md_security_stg: security 一般是做和安全相关的意义来理解,虽然也有有价证券的意思,但这里用来保存私募基金的相关信息,md 是什么意思叫? master data, 缩写, stg 呢? stage, 搞得我还真只能拿张纸和笔来一个个记对应关系。
    pfund_nav: 私募基金净值, private fund 一个简写一个全写已经不能容忍, 你还当中不用来下划线来区分一下, 还有, 净值用 nav 是个什么意思? 一眼看上去绝逼是 navigation 的简写, net value 简写也不是这么个写法啊。
    xujif
        5
    xujif  
       2015-08-10 11:08:16 +08:00   ❤️ 1
    @ariestiger 基金里面确实nav默认表示净值,至少我见过好几套项目里都这么用。 不同的缩写在不同的行业有不同的默认含义正常的
    metrue
        6
    metrue  
       2015-08-10 11:13:01 +08:00
    变量都取不好,还写什么代码。
    loading
        7
    loading  
       2015-08-10 11:17:17 +08:00 via Android   ❤️ 2
    xing4_ming2
    xue2_hao4

    现在我都是拼音加音调,用起来挺好~233
    sobigfish
        8
    sobigfish  
       2015-08-10 11:18:28 +08:00
    那还用什么web搜索引擎,直接代码片段管理工具就OK啊
    jesse6679
        9
    jesse6679  
    OP
       2015-08-10 11:19:58 +08:00
    @wezzard 哈哈,你太懂英式幽默了,好冷
    em70
        10
    em70  
       2015-08-10 11:28:56 +08:00 via Android
    这个项目没什么难度啊,爬虫和搜索都是迷你量级,还“仅人才要求这一项就很难搞定",产品出来用得人不会太多,但你不如借此机会把Python水平提高一下
    ariestiger
        11
    ariestiger  
       2015-08-10 11:35:46 +08:00
    @xujif 有可能,刚入这一行,真要是约定俗成,也就可以接受了,不过其他的问题仍然让人觉得头疼。
    tshwangq
        12
    tshwangq  
       2015-08-10 11:36:34 +08:00
    妈妈再也不用担心我不会取变量名了
    master13
        13
    master13  
       2015-08-10 11:40:39 +08:00
    - -我能说你是实在是闲的没事干了吗
    ca1123
        14
    ca1123  
       2015-08-10 11:55:02 +08:00
    用汉字就好了 啊哈哈哈哈哈哈哈哈
    tabris17
        15
    tabris17  
       2015-08-10 11:56:45 +08:00
    我宁愿用中文变量名也不用拼音做变量名
    FrankFang128
        16
    FrankFang128  
       2015-08-10 11:59:23 +08:00 via Android
    一个项目需要有项目字典
    linescape
        17
    linescape  
       2015-08-10 13:09:08 +08:00
    PHP是世界上最好的语言不是胡说的,不信你试试 $中文
    BOYPT
        18
    BOYPT  
       2015-08-10 13:23:29 +08:00
    @xujif 对呢,我最近自己做了个小网页app来跟踪新浪api的基金净值,就遇到了net value跟navigation的缩写撞上了……
    GPU
        19
    GPU  
       2015-08-10 13:28:35 +08:00 via iPhone
    好醉好醉,英语不好起产量名都是用谷歌翻译的
    azurefire
        20
    azurefire  
       2015-08-10 13:28:57 +08:00 via Android
    安利一下http://schema.org/docs/full.html
    Shy07
        21
    Shy07  
       2015-08-10 13:31:12 +08:00
    @IamI 写的时候无所谓,读起来就痛苦了
    btw,胖达好久不见
    jesse6679
        22
    jesse6679  
    OP
       2015-08-10 13:37:30 +08:00
    哈哈,抛了一块砖,想不到讨论得这么欢乐。PHP是世界上最好的语言,不服来战
    IamI
        23
    IamI  
       2015-08-10 22:47:30 +08:00
    @Shy07 长了才有表达能力啊。
    好久不见。
    crayygy
        24
    crayygy  
       2015-08-11 10:05:43 +08:00
    我个人一直使用的方法是,使用前缀加下划线作为某一类变量的通用,比如 id_user, id_student,pw_user,前缀可以在文档中详细说明,而后缀可以使用英文单词,如果不能完整说明清楚的可以再加一个下划线,比如, id_user_login,这样的。
    zix
        25
    zix  
       2015-08-11 10:17:08 +08:00
    其实就是词汇量不够……
    luzjoy
        26
    luzjoy  
       2015-08-12 11:55:24 +08:00
    我目前是:
    1,经常用 google 翻译
    2,html 使用 一些 :txtUserName btnAdd 等
    楼主的想法很好
    Hysteria
        27
    Hysteria  
       2015-08-13 21:07:38 +08:00
    @zix 还有就是语感不好,或者说语法学得不好,233333
    laotaitai
        28
    laotaitai  
       2015-08-14 12:08:28 +08:00
    有市场! 要是能集成到编辑器, IDE里, 就更爽了. 到时候收费100美刀, 我都愿意.
    WKPlus
        29
    WKPlus  
       2015-08-14 13:19:22 +08:00
    +1

    两大难事之一呀
    NeoAtlantis
        30
    NeoAtlantis  
       2015-08-14 21:24:22 +08:00 via Android
    科学起名,八卦起名,天干地支起名……
    alili
        31
    alili  
       2016-09-22 22:58:34 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1004 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 22:50 · PVG 06:50 · LAX 14:50 · JFK 17:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.