
本帖是从《放过那些程序猿,写文档的事让我们来》衍生出来的,因为原帖楼已经歪了,所以专门新辟一个帖子讨论。
说到被变量起名,还真是一件麻烦的事情。如果变量名起得乱七八糟,代码的可读性会下降很多。
如果用英文全拼吧,表意是很清晰,但是变量名会超长;如果汉语拼音缩写吧,变量名是短了,但总感觉土的掉渣;如果用随机字母拼成的变量名吧,还得写注释记录变量含义,如果漏写了注释,一个月后自己也休想看得懂了;还有变量风格到底是用驼峰命名法,还是用下划线分割,常常很纠结。
所以,作为一个有代码洁癖的码农,每次写程序的时候都要为给变量起名伤透脑筋。最不能忍受的是写HTML和CSS,每个DIV都得起一个名,弄的不好和Bootstrap里的重名,页面就各种错乱斯巴达了。
以前还以为只有我有这种小众烦恼的,在上一个帖子里面也有好几个人提出来,也有类似的“变量命名强迫癌”,原来我并不孤独。
我在考虑,有没有可能建设一个专门帮助程序员给变量起名字的垂直搜索引擎,当程序员输入心中的关键字后,搜索引擎给出与此相关的热门变量名称。
搜索引擎的模式大致上可以分为两类:
1、通过爬虫爬取github网站上的开源代码,搜集其中的海量变量名,然后通过数据清洗、分析、聚类提取出最热门、最常用、最优质、表意最清晰的变量名称供搜索用。
2、把常见的变量命名规则做成搜索策略,来自动构建变量名
3、记录搜索后,程序员选中了那些变量名,只要用户足够多,就能够统计出变量名中的高频词汇。
当然要做这样一个东西,难度是相当大的,仅人才要求这一项就很难搞定。开发团队需要具备开发爬虫经验,同时还要精通搜索算法,要找到这样的开发者谈何容易。如果要做的话,只能把这个项目做成开源项目,零门槛吸引各路技术极客的加入,远程线上协作。
还有一个难题就是投入产出比。需要投入这么大的开发量做出来的产品,到底有多少程序员会用?是不是真的能解决他们的问题?我心里面没有底。
以上只是我个人脑洞大开的想法,欢迎大家和我争论。
如果你也有为变量起名的烦恼,请留言+1,我想统计一下需求。
如果你有更高明的解决方案,欢迎留言论战。
如果你是爬虫、数据分析和搜索算法界的高人大牛,欢迎和我联系,进一步讨论: [email protected]
1 IamI Aug 10, 2015 在有现代 IDE 的自动提示的前提下,我是觉得变量名长就由它长吧,再长也没什么所谓… |
2 wezzard Aug 10, 2015 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. |
3 lingo233 Aug 10, 2015 那就面向汉字编程吧 |
4 ariestiger Aug 10, 2015 &nbs; 用英文全称 + 约定俗成的简写足矣。 如果是面向对象语言,一个真正的类(不是那种只有静态方法的 helper, util 类)其实, 一个方法就是一层 namespace,实例变量,方法变量结合这些 namespace context 就可以很好的理解了。 变量名长根本不是个问题,至少不是个多起眼的问题,spring 里面四五个单词,二三十个字符的类名变量多了,但这只会让代码更容易理解。 使用拼音,拼音首字母简写是要绝对禁止的,如果不禁止,那我就要离职。 真正在起名时面临的问题是,英文太差,找不到合适的词来给变量命名,随意使用缩写,缩写简写混用等。 比如,刚刚十分钟前,我还和人讨论数据库结构,起的一堆表名已经让人头疼,表的权限还没给我,我还没去细看这些列名是怎么样的,但估计也是乱成一坨: md_security_stg: security 一般是做和安全相关的意义来理解,虽然也有有价证券的意思,但这里用来保存私募基金的相关信息,md 是什么意思叫? master data, 缩写, stg 呢? stage, 搞得我还真只能拿张纸和笔来一个个记对应关系。 pfund_nav: 私募基金净值, private fund 一个简写一个全写已经不能容忍, 你还当中不用来下划线来区分一下, 还有, 净值用 nav 是个什么意思? 一眼看上去绝逼是 navigation 的简写, net value 简写也不是这么个写法啊。 |
5 xujif Aug 10, 2015 @ariestiger 基金里面确实nav默认表示净值,至少我见过好几套项目里都这么用。 不同的缩写在不同的行业有不同的默认含义正常的 |
6 metrue Aug 10, 2015 变量都取不好,还写什么代码。 |
7 loading Aug 10, 2015 via Android xing4_ming2 xue2_hao4 现在我都是拼音加音调,用起来挺好~233 |
8 run2 Aug 10, 2015 那还用什么web搜索引擎,直接代码片段管理工具就OK啊 |
10 em70 Aug 10, 2015 via Android 这个项目没什么难度啊,爬虫和搜索都是迷你量级,还“仅人才要求这一项就很难搞定",产品出来用得人不会太多,但你不如借此机会把Python水平提高一下 |
11 ariestiger Aug 10, 2015 @xujif 有可能,刚入这一行,真要是约定俗成,也就可以接受了,不过其他的问题仍然让人觉得头疼。 |
12 tshwangq Aug 10, 2015 妈妈再也不用担心我不会取变量名了 |
13 master13 Aug 10, 2015 - -我能说你是实在是闲的没事干了吗 |
14 ca1123 Aug 10, 2015 用汉字就好了 啊哈哈哈哈哈哈哈哈 |
15 tabris17 Aug 10, 2015 我宁愿用中文变量名也不用拼音做变量名 |
16 FrankFang128 Aug 10, 2015 via Android 一个项目需要有项目字典 |
17 linescape Aug 10, 2015 PHP是世界上最好的语言不是胡说的,不信你试试 $中文 |
19 GPU Aug 10, 2015 via iPhone 好醉好醉,英语不好起产量名都是用谷歌翻译的 |
20 azurefire Aug 10, 2015 via Android 安利一下http://schema.org/docs/full.html |
22 jesse6679 OP 哈哈,抛了一块砖,想不到讨论得这么欢乐。PHP是世界上最好的语言,不服来战 |
24 crayygy Aug 11, 2015 我个人一直使用的方法是,使用前缀加下划线作为某一类变量的通用,比如 id_user, id_student,pw_user,前缀可以在文档中详细说明,而后缀可以使用英文单词,如果不能完整说明清楚的可以再加一个下划线,比如, id_user_login,这样的。 |
25 zix Aug 11, 2015 其实就是词汇量不够…… |
26 luzjoy Aug 12, 2015 我目前是: 1,经常用 google 翻译 2,html 使用 一些 :txtUserName btnAdd 等 楼主的想法很好 |
28 laotaitai Aug 14, 2015 有市场! 要是能集成到编辑器, IDE里, 就更爽了. 到时候收费100美刀, 我都愿意. |
29 WKPlus Aug 14, 2015 +1 两大难事之一呀 |
30 NeoAtlantis Aug 14, 2015 via Android 科学起名,八卦起名,天干地支起名…… |
31 alili Sep 22, 2016 |