星期五
for (int i=0; i<totalButtons; i++)
“我的天,你这个蠢蛋!你这是疯了吗!?我已经为了类似这种情况的代码准备了风格指南。在这里争论这个问题是个错误。这会伤害你的自尊的。”
我在Chrome中打开了一个新标签页,点击了书签工具栏中的风格指南链接。以前,我属于有勇无谋 — 毫无经验,不备而战。不过我最近学会了如何应对这种人身攻击。
“我告诉过你。这不是Java标……”
我尽可能让他住嘴。目前,还不值得争吵。我还拥有回答的权利。我用简单粗暴的方法诉诸权威,再来调整空格。
页面加载,我们也向屏幕靠地更近了。胜利就在这个网站的某处。我带着压制别人的洋洋得意。
但是网站上却并没有提到。恐慌随之而来。没有权威代码,代码风格的争论根本停不下来。我不能让另一个Tab与空格大战重演。我们在这种问题上的摩擦只有天知道。
我疯狂地在Google上搜索相关词条“Java loop style guide(Java循环风格指南),” “java white space guide(Java空格指南),” “Java white space guide for loop(Java循环的空格指南)” 而返回的结果毫无帮助。这种问题真的是太小了,连整个互联网上(三次Google搜索)都找不到一条简单的意见吗?不。必须要解决它。如果别人没解决,那就由我来解决。
下班时间很快来临,所以我们决定将争论留到下个星期。但是在变成文明的理论之前,我的对手给了一个恶狠狠的威胁:“我这周末会看得更仔细,”他说道。
真操蛋。
星期六
我不能放松。我坐在这儿的时候,他会比我更强。如果我不准备,星期一我将彻底被击败——抄送给整个团队的邮件真的将变成对我的公开“处刑”。我要阻止它发生!老天,我找到了一些东西!没有任何人能辩驳的东西。但那是什么呢?
想想,老兄!想想!我重新搜索 “Java style guide”一页页的深入搜寻,时间飞快,我却并没有离答案更近。但我突然醒悟过来:根本就不需要什么风格指南。我只要动一动指头就能得到整个Java源代码。答案近在眼前。
我快速打开了java文件夹并打开了我看到的第一个源文件。我快速的扫过代码寻找第一个循环。找到了!
for (int i=0; i<LENGTH; i++)
就是它!银弹一直就在我眼前。我靠在椅子上,沉浸于胜利之中。可怜的人儿啊。他完全不知道星期一等着他的是什么。然而,当屏幕底部另一个循环映入眼帘中时,我的愉悦感迅速消退。这又是个啥?
for (int i = 0; i < LENGTH; i++)
“这空格……”
我向右滚动了一点。
i = 0
“哦不……”
绝望
第一个文件带来的就是个悲惨的故事。我拉到文档底部的那一刻,比分是残忍的4比1,对手的胜利。但是我并没有动摇。“只是个特例,”我说服自己。只是一个怀有不满的雇员工作成果。那只是一个不关心良好风格的疯子罢了。只是无效数据罢了。该死,我们一定会把这个家伙的工作用作统计数据的。那只会掩盖“隐藏的”真正结论。
我需要更加“相关”的数据,但是手工检查显然不可行。Java源文件的数量出人意料地多。
于是我写了统计用的Python代码:
我将打开每个源文件,找出每个循环片段,最终找出更符合“Java标准”的行,我作了一个深呼吸。当我按下键盘时,争论永远地结束了。结果是:
“天哪!”我感觉到这个任务的重要程度迅速降低。发现的唯一事实是我可能站在历史的错误一端。这就是狠狠地被击败了。86%的Java代码使用了带空格语法。只有14% — 我的同盟们 — 有使用“良好风格”的意识。
暴风逼近地平线,但是我仍然拒绝接受事实。我的意思是,我可是个明事理之人。我可以承认自己的错误,但我却不会承认自己输掉了辩论。这两者完全不同。而这并不是在逃避。于是我将做任何明事理之人在信息不符时都会作出的选择:精挑细选。
我下载了一份GWT的代码。这是Google广泛接受的库。这是个开始的好地方。
我再次运行代码分析。
结果
……
……
显然是数据集的问题。0.01?我对这样的仍然有一点点数据的结果并不完全信服,更别说其他的有效数据了。
我跳转到Guava的源代码。他们在干净良好的代码风格上的投入真是神乎其神。我的信心十足,这是一家好公司。至少,不可能有比0.001更差的了。
我运行了分析脚本。
…处理中
……处理中
………处理中
“该死。”
“语句之间是应该有空格的。”
周一
我的同事,带着有史以来最为自鸣得意的一张脸问着:“你周末看了那个语法上的东西了么?”
“什么?不——我完全忘了这事。”