当前位置: 首页 > 科技观察

程序员遇到Bug的30个反应

时间:2023-03-20 23:45:22 科技观察

开发应用程序是一项压力很大的工作。没有人是完美的,因此代码中的错误在这个行业中相当普遍。面对错误,一些程序员会生气、沮丧、沮丧,甚至气馁,而另一些程序员则保持冷静和沉着。因此,修复BUG的过程如何处理,也是值得仔细琢磨的。我想分享一些关于程序员在修复源代码时所经历的事情的想法。当事情变得紧张时,就会触发轻松的幽默。通常,该应用程序最终会运行,您可以继续执行下一个重要任务。我敢肯定,许多Web开发人员和软件工程师都经历过这些困难,然后一笑置之。1.“不知道是删除还是重写”回顾旧的源代码,会有一种返工并写入更大集群的冲动和诱惑。丑陋的逻辑语句和冗长的语法使代码非常难以阅读!但话又说回来,如果代码没有被破坏,就不要修复它。这场激烈的战斗是我经常面对的,而且显然困扰着许多软件开发人员。2.“作为入门框架,我应该看看Github”我想大多数开发人员都知道Github,每天都会发布数量惊人的开源项目。任何语言的程序员都可以通过Internet借鉴现有项目、加入wiki讨论或创建自己的代码存储库。它是各种项目的插件和模板的绝佳资源。3.“为什么这个脚本需要那么多库?”尤其是一些流行的语言,比如Java、Objective-C,库的数量可能会变得异常凶猛。当构建一个需要大量基础的框架时,所需库的数量就变得更加明显。甚至一些JavaScript友好的插件也需要无数的额外文件。有时,这会让人觉得很烦人——但至少它有效!4.“网上肯定已经有解决办法了。”我遇到难题的第一反应是上网查。程序员会把他们遇到的问题发到论坛上,这个问题最终会被解决并归档。谷歌搜索问题关键字的好帮手,可以为您指明正确的讨论方向。不幸的是,有时您会迷路,因为您手头没有关于特定问题的太多信息。5.“这个功能有插件吗?”为什么要重新发明轮子?插件是扩展任何程序或网站的用户界面的重要资源。此外,它们还为开发人员提供了一些自定义和独特的选项。如果确实没有可用的插件,为什么不自己构建一个呢?6.“网站能用,我怕IE。”在InternetExplorer中呈现网页的历史充满了我们所见过和经历过的考验和磨难。从5.5版本升级到IE9-IE10总是需要更高级浏览器的支持。Web开发人员可能害怕调试网页,因为在IE6中打开页面是一场渲染噩梦。值得庆幸的是,那些日子正在慢慢成为过去。7.“对于逻辑表达式来说,这似乎不太符合逻辑。”有用于if/else循环、for循环、while循环、do循环等的逻辑表达式。在浏览示例代码时,我试图弄清楚我的逻辑是如何工作的。同样,有很多NOT运算符和比较标记。我经常回去更新自己的逻辑以更好地适应未来的实践。8.“我用了30分钟写了这个函数,我花了2个小时才让它运行起来。”这不就像我们自己的编程故事吗?您正在幸福地构建一些东西,但突然之间,该函数输出了一个致命错误。因此,现在您必须返回并删除一些代码块才能找到发生错误的行号。当您最终找到罪魁祸首并修复它时,可能会让人筋疲力尽,但也会感到欣慰。9.“看了多篇博文,才发现之前的想法全都错了。”我经常从我自己的编程想法开始,然后一头扎进去,但如果事情不起作用,这可能会导致麻烦。如果顺利的话,就像当初想象的那样。在我开始一个项目后,有很多次卡住了,然后不得不寻求博客和其他论文的支持。然后我发现我的整个做法其实是错误的,从头开始更容易!如果我先做研究,从长远来看会节省我的时间。10.“StackOverflow上有些好心人可能愿意帮助我。”我数不清自己在StackOverflow上解决了多少次问题。社区中到处都是善良而聪明的人,如果您迈出第一步,他们非常愿意提供帮助。在所有在线论坛中,StackOverflow无疑对软件编程和前端/后端Web开发提供最广泛的支持。11.“因为缺少右括号,所以费了很大力气才找到问题所在。”调试是您必须采取的步骤。进两步,退一步。盯着代码看了好几个小时,以为函数名或者变量作用域有误,结果发现少了一个括号。这味道太酸了。所有的时间都因为一个小小的语法错误而浪费了。12.“喝杯咖啡休息一下!”有时,您只需要起身离开显示器即可。将鼠标悬停在键盘上数小时有助于打破常规。大多数健康指南建议每30-60分钟休息一次。但这完全取决于您的需要,如果您发现在程序中间休息更令人沮丧,那就不要。13.“我应该把这个项目搁置,以后再处理。”休息的另一种选择是远离你的项目,而不仅仅是远离你的电脑。如果还有其他工作要做,那么它还不如做其他工作。与您已经花了5个小时解决问题但仍然无法开始相比,这将更好地分配时间和资源。14.“我怀疑古典音乐会激发我的编程能力。”一种理论认为,古典音乐可以在生命的早期阶段刺激植物生长。我个人非常喜欢边听古典音乐边写复杂的音符。爵士乐、钢琴、大乐队,优雅的音乐在全世界的人类文化中占有一席之地。那么,边编程边听智能音乐真的能让调试更智能吗?可能不会,但希望它不会让您变得更加笨拙。15.“喝点酒,也许现在正是检验鲍尔默巅峰理论的好时机。”很多读者都听说过鲍尔默的巅峰论,根据一部特别的XKCD漫画改编。简单的说,这个理论认为程序员的编码能力在喝了一定量的酒后会达到顶峰。作者的名字叫史蒂夫鲍尔默,他举止古怪,像个醉汉,这很讽刺,因为鲍尔默在微软从来都不是真正的程序员。也许我们需要等待其他人在实践中证明理论。16.“有人动过我的源代码吗?”这听起来有点妄想和偏执,但有时你会忍不住怀疑是不是有人在你补觉的时候写了这个东西。回顾过去几周或几个月你从事的项目会让你的心沉下去。有时您会发现一些您不记得添加的内容-甚至是您上周刚刚浏览过的项目!我对代码很着迷,但你永远不会知道……17.“我不知道这意味着什么。”可能发生在您身上的最糟糕的事情是您完全不知道如何处理您正在浏览的源代码。它可能是您自己的项目,也可能是其他人的项目,但问题的根源是相同的。现在,您必须决定是否值得花更多时间寻找替代方案,或者仔细检查脚本以了解其工作原理。18.“我需要谷歌错误信息。”在PHP工作多年,不得不说Google是我调试问题时最好的朋友。Objective-C、C++、Java、Python和其他主要语言也是如此。错误消息非常有用,但除非您记得不同代码的含义,否则它读起来更像是经过翻译的计算机语言。值得庆幸的是,有很多在线支持可以帮助我们确定这些错误消息的真正含义。19.“我应该停下来收工……但我真的很想解决它!”我们都有过极度沮丧和放弃的感觉,但总觉得放弃不是正确的做法。因此,您不断挖掘并尝试新的调试解决方案。但是,如果这仍然意味着又浪费了一个小时怎么办?我对这样的情况并不陌生,这非常令人沮丧。20.“我的天哪,我之前怎么不写点评论?”说到基本的前端HTML/CSS/JS,我们就不用写注释了。但更复杂的脚本和程序需要某种形式的组织,当您需要在数月甚至数年后返回查看它们时。有时您会忘记注释函数及其参数、输出格式和其他必要数据。这无疑会在一段时间后导致混乱,并且当错误开始出现时,您必须调试整个脚本才能找到解决方案。因此,您将从一些有用的注释中获益良多。21.“它在20分钟前还在工作……”构建一个程序最令人沮丧的部分可能是当它从工作变为不工作时——而你还没有更新代码的任何部分!我发誓这是真的。这是没有意义的——也许其他一些程序正在运行缓存版本?有很多次,当您更新一小部分代码时,整个程序就会崩溃并完全停止工作。恢复到最新的工作副本,并从那里逐步进行。22.“只是忘记了一个分号,整个程序因此崩溃了。”几乎我使用的每一种编程语言都需要终止符。它在C/C++中很常见,但不是在所有语言中。忘记添加终止符是一个明显的错误!但是解析器并不知道这一点,它会抛出一个致命错误。所以,你要多花20分钟查找技术故障,而补上漏掉的分号只需要1秒钟。嗯,这就是调试软件的乐趣。23.“我不知道让别人修复我的代码要花多少钱?”雇用另一名开发人员的想法很诱人,但显然在经济上不可行。如果您没有亲身经历过这些错误,又如何从中吸取教训呢?当你在失败了很多次之后终于理解了一个编程概念时,这种感觉真是太棒了。尽管如此,我还是时不时地想到“让其他人修复代码”的想法。24.“快速浏览一下HackersNews可以提高我的工作效率。”许多程序员最喜欢阅读的有关软件和初创公司的社交新闻的选择是黑客新闻头版。它有大量关于自由职业、时间管理、软件开发以及启动和融资的重要信息。虽然HN可以让您通过自我教育提高工作效率,但它也可能会浪费您的时间。每隔几个小时快速浏览一下HackersNews也不错。25.“这个API怎么没有文档记录?!”使用带有不良文档的插件或框架最令人沮丧的事情是您必须自己深入挖掘源代码。我喜欢开发人员花时间专门设计可用文档页面的项目。所有参数和选项都有清楚的解释,甚至可以在一些示例代码片段中使用。但遗憾的是,情况并非总是如此。所以最简单的方法就是远离糟糕的文档,不要自找麻烦。26.“我希望我保存了那个数据库的备份副本……”在编写和调试代码时,我不会想到备份。但是,数据备份提供了垫脚石,使我们能够返回并进行更改。这在实时服务器环境中特别有用,因为任何更改都会立即进行。为了以防万一,我们应该记得在本地保留一份网站文件和数据库!虽然这可能是一项烦人的任务,但它并不像重建损坏的SQL数据库那么烦人。27.“让它工作的最快解决方案是什么?”在花费数小时苦思冥想定制解决方案后,很明显您需要一种新方法。在设计一个漂亮的界面之前,程序员首先想到的是让功能正常运行。确定最快、最准确的解决方案并实施该解决方案以使其发挥作用是100%的时间。然后,继续审美。28.“我打赌更新我的软件会解决这个问题。”管理编程语言依赖项和插件的团队不需要经常发布版本。有时,更新PHP/Ruby/Python/SQL版本可以解决将文件从计算机传输到实时服务器时的调试问题。本地更新很少有助于修复源代码中的错误,除非你的版本已经过时了。所以,值得一试!29.“我应该更有条理地学习Git……下周去学习它。”开源版本控制包Git在程序员中非常流行。与其他竞争对手相比,它提供了更轻松的学习曲线,并被许多在线代码存储库使用,例如Github和Bitbucket。开发人员很容易推迟实际学习Git,因为这对初学者来说显然很难。但是一旦你了解了基本命令,Git就是小菜一碟。它还使调试版本控制更加清晰。30.“算了,我重新来过。”有时,在绞尽脑汁数小时后,您需要做的就是将您的工作文件移动到存档目录(或删除它们)并重新开始。开始吧。但考虑到你已经失去的时间,你很难下定决心。然而,当我不知所措时,我往往会选择从头开始,因为有可能找到正确的路径来完成项目。翻译链接:http://www.codeceo.com/article/30-action-programmer-bug.html英文原文:30CommonReactionsProgrammersHaveWhenThingsGoWrong