每个程序员都有自己的烦恼。无论这是指范围蔓延、匈牙利符号还是臭臭的同事,我们都知道这是我们行业中的一个特定烦恼。以下是最让程序员烦恼的10件事,根据最近在StackOverflow上的一项调查汇编而成,并结合了一些个人经验:10.评论——只解释“如何”,不解释“为什么”。编程入门课程通常会教学生写代码前先写注释,尽量多注释。这种教育的出发点是“注解多肯定比注解少好,注解少肯定比没注解好”。不幸的是,许多程序员将此视为任务并注释每一行代码。这就是为什么你经常看到像JeffAtwood在他的博客文章CodingWithoutComments中提到的代码:r=n/2;//Letrbeequaltondividedby2//Whenr-(n/r)isgreaterthantLoopwhile(abs(r-(n/r))>t){r=0.5*(r+(n/r));//设r等于r+(n/r)的一半}经过这样的评论,你是不是了解这段代码的作用?确实,我也没看懂。问题是,虽然注释很多,但只是描述了代码做了什么,却没有解释为什么代码会这样写。//利用Newton-Raphson算法求n的平方根的近似值r=n/2;while(abs(r-(n/r))>t){r=0.5*(r+(n/r));}这好多了!也许我们还没有完全理解这段代码的作用,但至少我们有了一点方向。注释用于帮助读者理解代码,而不是解释语法。我可以大胆的认为读者理解了for循环的工作原理;所以不需要写这样的注释:“//对客户列表执行for循环操作”。读者不明白的是你的代码做了什么,为什么要这样实现。9.干扰很少有程序员可以在眨眼之间从一个活动过渡到编程状态。通常情况下,我们更像是一辆需要慢慢启动的火车,而不是一辆可以突然加速的法拉利;非常丰富。不幸的是,当您的思路不断被客户、经理和同事打断时,您的大脑可能很难进行编程。当我们做一件事时,有太多的琐事需要我们牢记。我们要先放下这件事情,把那个人的事情处理了,然后再回去做这件事情,不要出任何差错。这些干扰打断了我们的思路,而重新整理思路的令人沮丧、耗时的过程从来没有比这更令人沮丧和沮丧了。8.Scopecreep解释自维基百科:Scopecreep(也称为focuscreep,requirementcreep,featurecreep,andSomeothermessageevolutionterms),指的是project中项目需求的失控变化管理。当项目范围没有明确定义、记录或控制时,就会出现这种现象。这通常被认为是一件消极的事情,应该尽可能避免。范围蔓延通常会将一个简单的需求变成一个复杂且耗时的庞然大物。负责需求研究的人只需简单地敲几下键盘就能把事情变成这样:版本1:显示该区域的地图版本2:显示该区域的3D地图版本3:显示该区域地图应该是三张立体,还可以当飞行导航图!原本可以在30分钟内完成的任务变成了一个超级复杂的系统,需要数百人/天才能完成。更糟糕的是,大多数时候,需求变更发生在开发阶段,因此你需要重写代码、倒退,有时甚至删除几天前才开发的代码。7.管理者——对编程一窍不通管理不是一件容易的事。人是讨厌的动物;我们善变、喜怒无常,我们认为自己是最好的。要让这样一群人保持快乐和团结,需要付出巨大的努力。但是,这并不意味着管理者不了解下属的工作就可以进行管理。当经理对我们所做的事情一无所知时,后果是频繁的需求变更、不切实际的截止日期和普遍的挫败感(经理和开发人员)。程序员对此抱怨很普遍,这是分歧的根源(就像一部搞笑的卡通片)。根据我的经验,这些工具只适合生成API文档供其他程序员参考。如果你开发的软件每天都有人使用,你必须写一些外行人(比如你的实现,客服等)看得懂的文档手册。我们不难看出,有一些事情是程序员极不愿意做的。您可以简单地查看所有开源项目。人们对这些项目的不懈要求是一个:文档。我可以保证,无论在哪里,至少有一半的程序员在被要求写文档时会说:“别人写不出来吗?”。5.程序——缺乏文档我从来没有说过我们程序员说一套做一套。程序员经常在他们的项目中使用第三方库和应用程序。所以,我们需要文档。不幸的是,正如我在#6中所说,程序员讨厌编写文档。这戏剧性的事情就发生在我们身上。当您需要使用第三方库时,没有什么比发现至少一半的API无法知道该做什么更令人沮丧的了。函数poorlyNamedFunctionA()和函数poorlyButSimilarlyNamedFunctionB()有什么区别?在使用PropertyX属性之前是否需要测试空值?我想弄清楚的唯一方法是通过我自己的测试和错误报告!该死。4.硬件任何曾经被要求调试数据库服务器上的奇怪崩溃,或修复RAID驱动器无法正常工作的问题的程序员,在发现这是硬件问题时都会感到苦恼。有一个普遍的误解,认为程序员只是与计算机打交道的人,他们必须知道如何修理计算机。不可否认,有些程序员确实是多面手,但我估计大部分程序员都不知道,或者根本不关心程序编译成机器码后是如何工作的。我们只关心自己做的东西是否符合需求文档,这样我们就可以集中精力解决上层的任务。3.含糊不清的“网站挂了”。“XX功能无法正常工作”。处理模棱两可的任务是一件痛苦的事情。每次非程序员被要求重现他们遇到的问题时,我都对这种愤怒感到惊讶。他们似乎不明白只是说“它坏了,修复它!”不会让我们工作,我们需要更多信息。有(在大多数情况下)软件如何工作的痕迹。我们也很高兴看到这一点。请包容我们,帮助我们指出问题是在什么阶段、什么情况下发生的,而不是简单的说“修好了”。伯乐在线推荐阅读:《“出错了”和报告Bug的艺术》、《如何有效地报告Bug》2。其他程序员程序员通常与其他程序员相处不融洽。很惊讶,但这是真的。我可以轻松列出这方面的前十件事,说的再详细甚至可以单独写一篇博客,所以这里我只列出几个让其他同事感到厌烦的程序员的共同特征:不友好。搞不懂什么时候讨论系统架构,什么时候做。无法有效沟通,使用误导性行话。自己的事情自己处理不好。对要完成的计划和项目缺乏兴趣。所以,这是最差的,但不是最差的,序号为1的那个惹不起程序员...1.我写的代码——6个月后回头看我之前写的代码,我还会觉得伤心?那个时候怎么会这么傻!怎么能写出这种东西!烧了吧!把它扔进火里!哈,好消息。你并不孤单。事实上,软件技术世界是一个不断变化的世界。今天被认为是最好的方法明天可能就已经过时了。我们不可能写出完美的代码,因为判断我们程序好坏的标准每天都在变化。令人非常沮丧的是,你的工作在今天看起来如此疯狂,但在不久的将来可能会成为嘲笑的对象。这真的很令人沮丧,因为无论我们如何努力学习最好的开发工具、设计、框架和开发方法,我们总是落后于最新的技术发展趋势。对我来说,这是做程序员最苦恼的事情。我们在不断地升级技术,让软件变得更好,但我不禁有种沙画和尚的感觉。嗯,都写下来了。以下是最让程序员烦恼的十件事。不过,如果您觉得我的文章有什么不足之处,请告诉我,欢迎大家留言!原文链接:http://www.vaikan.com/top-10-things-that-annoy-programmers/
