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