脑洞大开:能否建设一个帮助程序员起变量名的垂直搜索引擎 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
这是一个专门讨论 idea 的地方。

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

那这个时候,不妨可以把那些 idea 分享出来,启发别人。
jesse6679

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

  •  1
     
  •   jesse6679 Aug 10, 2015 5281 views
    This topic created in 3913 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

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

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

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

    31 replies    2016-09-22 22:58:34 +08:00
    IamI
        1
    IamI  
       Aug 10, 2015
    在有现代 IDE 的自动提示的前提下,我是觉得变量名长就由它长吧,再长也没什么所谓…
    wezzard
        2
    wezzard  
       Aug 10, 2015   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  
       Aug 10, 2015
    那就面向汉字编程吧
    ariestiger
        4
    ariestiger  
       Aug 10, 2015 &nbs; 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  
       Aug 10, 2015   1
    @ariestiger 基金里面确实nav默认表示净值,至少我见过好几套项目里都这么用。 不同的缩写在不同的行业有不同的默认含义正常的
    metrue
        6
    metrue  
       Aug 10, 2015
    变量都取不好,还写什么代码。
    loading
        7
    loading  
       Aug 10, 2015 via Android   2
    xing4_ming2
    xue2_hao4

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

    两大难事之一呀
    NeoAtlantis
        30
    NeoAtlantis  
       Aug 14, 2015 via Android
    科学起名,八卦起名,天干地支起名……
    alili
        31
    alili  
       Sep 22, 2016
    About     Help     Advertise     Blog     API     FAQ     Solana     4391 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 208ms UTC 04:10 PVG 12:10 LAX 21:10 JFK 00:10
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86