应用程序开发是一件十分有压力的作业。代码中出现bug是相当普遍的现象。面临bug,一些程序员会生气,会懊丧,会心慌意乱,乃至会心灰意懒,而另一些程序员会仍然坚持冷静冷静。因而,怎样处理修正bug的过程也值得咱们细细琢磨。
这儿想给大家分享一些程序员修正他们的源代码时所经历的想法。这是作业变得紧张时所触发的轻松诙谐。一般说来,应用程序终将能够作业,然后你也能够进入到下一个巨大的使命。
我信任很多网站开发人员和软件工程师经历过这些艰苦,然后在事后一笑而过。
1.“我不知道是要删去仍是要重写它”
回顾从前老的源代码,会有一种想要返工写成较大块集群的冲动和诱惑。丑陋的逻辑语句,还有冗长的语法,导致代码十分难以阅览!但话又说回来,假如代码没有坏掉的话,那就不要去修正它。这种汹涌澎拜的斗争是我常常要面临的,而且明显会困扰许多软件开发人员。
2.“关于起始结构我应该检查Github”
我想大多数开发人员都知道Github,上面每天都有数量惊人的开源项目发布。任何言语的程序员都能够经过互联网学习现有项目,加入维基评论,或者创建自己的代码库房。它是各种项目所需插件和模板的超棒资源。
3.“为什么这个脚本需求这么多库?”
尤其是一些比较大众化的言语,如Java和Objective-C,库的数量或许变得异常凶狠。当构建一个需求很多基础的结构时,所需的库的数量就变得清楚明了得多。即使是一些适用于JavaScript的插件,也会额定需求无数的文件。有时,这会让人觉得烦杂恼人——但至少是有用的!
4.“在互联网的某个地方一定现已有了处理计划。”
我面临扎手问题的第一反应是上网查。程序员会将他们遇到的问题经过帖子发布到论坛上,然后这个问题最终得到处理并归档。谷歌搜索问题关键字的好帮手,能够点拨你往正确的评论方向走。不幸的是,有的时分却是由于手头没有特定问题的太多信息而找不着北。
5.“有没有这个功用的插件?”
为什么要重新创造轮子?插件是扩展任何程序或网站用户界面的巨大资源。此外,它们还为开发人员供给了一些自定义和独特的选项。万一真的没有可用插件的话,没什么不自己构建一个呢?
6.“尽管网站能够作业,但我惧怕IE阅览器。”
在Internet Explorer中烘托网页的前史充满的艰苦检测,是咱们有目共睹或亲身体验过的。从5.5版别升级到IE9-IE10,总是需求争取到更高档阅览器的支撑。web开发人员或许会惧怕调试网页,由于在IE6中翻开页面是一个烘托噩梦。值得幸亏的是,这样的日子正在渐渐成为曩昔。
7.“关于逻辑表达式而言,这好像并不怎样合乎逻辑。”
关于if / else循环,for循环,while循环,do循环等等,都有逻辑表达式。当阅览示例代码时,我企图指出我的逻辑是怎样作业的。NOT运算符和比较标记的数量又是如此之多。我常常回过头去更新我自己的逻辑以便于更好地适合未来的做法。
8.“我用30分钟写函数,花2小时让它作业。”
这难道不像咱们自己的编程故事吗?你正兴致勃勃地在构建着什么,可是突然之间,函数输出了一个丧命的过错。所以,现在你必须回过头去删去一些代码块,以找犯过错发生的行号。当你总算找到罪魁祸首,并处理它时,尽管有种精疲力竭的感觉,但也满心安慰。
9.“在阅览多篇博客文章之后,我意识到,我之前全都是错的。”
我常常会一开端就依据自己的编程思想,一头扎进去研讨,可是这或许会导致麻烦,假如作业不像原先设想地那样顺利的话。现已有很屡次在我启动一个项目之后,陷入了困境,然后只好寻求博客和其他论文的支撑。然后我发现我的整个办法实际上是过错的,而且从头来过更简单!假如我开端的时分能先做一番研讨的话,从长远来说,反而节省时刻。
10.“Stack Overflow上和蔼的人或许乐意帮助我。”
我现已数不清有多少次我经过Stack Overflow处理了难题。社区里都是和蔼和聪明的人,他们十分乐意供给帮助,假如你迈出第一步的话。在一切的在线论坛中,Stack Overflow绝对是对软件编程以及前端/后端web开发支撑最广泛的网络。
11.“花费大力气才找出问题的原因是缺少了右括号。”
调试是你必须要采取的过程。进两步,退一步。盯着代码数个小时,以为函数名或变量效果域中有哪里搞错了,最终才发现是遗漏了一个括号,这味道,酸爽得不要不要的。一切这些时刻都由于一个小小的语法过错而糟蹋。
12.“喝杯咖啡,歇息一下!”
有时分,你仅仅需求站起来,远离显示器。将鼠标悬停在键盘数个小时,反而有助于打破常规。大多数健康辅导都会主张咱们每隔30-60分钟歇息一会。可是这一切都取决于你的需求,假如你觉得在程序中心歇息更令人懊丧的话,那就不要中止。
13.“我应该把这个项目置之不理,以后再来处理它。”
歇息的另一个挑选是脱离你的项目,而不仅仅是远离你的电脑。假如还有其他作业需求做,那么无妨去做其他作业。相关于现已花费了5个小时来处理问题仍然不得入门而言的话,这将能更好地分配时刻和资源。
14.“我很置疑古典音乐能否激发我的编程才能。”
有一种说法是,古典音乐能够在生命的前期阶段促进植物生长。我个人十分喜爱在写杂乱笔记时倾听古典音乐。爵士乐、钢琴、大乐团,优雅的音乐在全世界的人类文明中都有一席之地。那么,在编程的一起倾听才智的音乐真的能够让你更才智地调试吗?或许不会,不过期望它不会让你变得更笨拙。
15.“喝点酒吧,或许现在是查验鲍尔默峰值理论的好时机。”
很多读者都听说过鲍尔默的峰值理论,依据一个特殊XKCD漫画而得出。简略地说,这个理论以为程序员的编码才能在喝了一定量的酒之后,会达到一个峰值。作者名叫史蒂夫·鲍尔默,他的行为乖僻,就像是一个醉汉,这有一定的挖苦意味,由于鲍尔默在微软历来就不是一名真实的程序员。或许咱们需求等候他人来实践证明这个理论吧。
16.“是不是有人动过了我的源代码?”
这听起来有点妄想和偏执,但有时你会不由自主地置疑,是不是有人在你补觉的时分,写过这个东西了。回顾曩昔几周或几个月做的项目会让你的心不断地往下沉。有时分你会发现一些你现已不记住增加的东西——乃至这个项目你最近一周才刚刚阅览过!我为代码而疯狂,但你永久不会知道…
17.“我不知道这意味着什么。”
你能遇到的最坏状况是,你对你正在阅览的源代码彻底不知道该怎样做。或许是你自己的项目,也或许是他人的项目,但问题的根源是相同的。现在,你必须决定是否值得花更多的时刻去搜索代替计划,或仔细检查脚本以了解它是怎样作业的。
18.“我需求Google过错信息。”
在PHP中作业了多年之后,我不得不说,Google是我调试问题时的最好的朋友。运用Objective-C、C ++、Java、Python和其他首要言语,也是如此。过错信息十分有帮助,可是除非你记住不同的代码意味着什么,否则它读起来更像是翻译过的计算机言语。值得幸亏的是,有很多在线支撑能够帮助咱们确认这些过错信息的真实意义。
19.“我应该停下来,收工……但我真的很想处理它!”
咱们都有过极度心灰意懒,想要放弃的感触,但总感觉功败垂成不是正确的挑选。于是,你继续埋首研讨,并测验新的处理计划来调试。可是,假如这仍是意味着另一个小时的糟蹋呢?关于这样的状况我并不生疏,令人十分令人懊丧。
20.“哦,天哪,我以前为什么不写点注释呢?”
当涉及到比较基础的前端HTML / CSS / JS时,咱们没有必要写注释。但更杂乱的脚本和程序却需求一定形式的条理安排,当你在几个月后,乃至若干年之后需求再回过头来看的话。有时你会忘掉注释函数及其参数、输出格局,和其他的必要数据。这在一段时刻之后无疑会导致紊乱,而且,当bug开端出现时,你必须调试整个脚本来寻觅处理计划。因而,要是有一些有帮助的注释就会让你获益良多。
21.“20分钟前它还能够作业的……”
在构建程序时,或许最令人懊丧的部分就是,它从能作业到不能作业——而你没有更新代码的任何部分!我立誓这是真的。而且这是没有任何意义的作业——或许是其他程序正在运行缓存版别?有很屡次你更新了一丁点代码,却导致了整个程序溃散犯错,彻底中止了作业。康复到最近可作业的复制文件,然后从那里开端一步步前进。
22.“仅仅忘掉了一个分号,然而整个程序却因而而轰然倒下。”
简直一切我运用的编程言语都需求结束符。尽管不是一切的言语都有,但在C/C ++中是很常见的。忘掉增加结束符,不过是一个很明显的过错!可是解析器不知道这一点,它会抛出一个丧命过错。于是,你不得不额定花20分钟去搜索技术毛病,而原本只需求用1秒钟补上那个缺少的分号即可。嗯,这就是调试软件的趣味。
23.“我不知道让他人来修正我的代码,得花多少钱?”
延聘另一个开发人员的点子是挺诱人的,但从财政上看明显没有那么可行。而且假如你不亲身体验的话,又怎样能从这些过错中学到东西呢?当你在经历屡次失利之后,总算理解了某个编程概念的时分,那感觉真是棒极了。尽管如此,我的脑海里仍然时不时地有一种“让他人来修正代码”的冲头。
24.“快速阅览Hackers News能够进步我的作业功率。”
很多程序员最喜爱阅览的,有关于软件和创业公司等社会新闻的挑选是Hackers News头版。它有很多关于自由职业、时刻管理、软件开发、以及创业发布和融资的很多信息。尽管HN能够经过自我教育让你感觉自己变得更有功率了,但一起它也会糟蹋你的时刻。每隔几小时去快速阅览下Hackers News也不是那么糟糕。
25.“这个API怎样没有文档?!”
在运用带有坏文档的插件或结构时,最令人懊丧的是,你必须靠自己去深化研讨源代码。我喜爱开发人员花时刻去专门规划可用文档页面的项目。一切的参数和选项都解说得清清楚楚,乃至或许会被用在一些示例代码片段中。但可悲的是,现实并非总是如此。所以最简略的办法是远离不良文档,不自找麻烦。
26.“我真期望我保存了那个数据库的备份副本……”
在编写和调试代码时,我不会想到要备份。然而,数据备份供给了答应咱们回过头去修正的踏脚石。这在实时的服务器环境中尤为有用,由于有什么变化会当即履行。以防万一,咱们应该记住保存网站文件和数据库的本地副本!尽管这会是一个恼人的使命,但其恼人程度远远比不上重建损坏的SQL数据库。
27.“让它正常作业的最快处理办法是什么?”
在花费数个小时苦苦思考自定义的处理计划之后,很明显你需求一种新的办法。在规划美丽的界面之前,程序员首先想到的是让功用正常作业。确认最快、最精确的处理计划,并施行这个处理计划让其作业才是100%利用了时刻。然后,再转移到美丽美观方面。
28.“我敢打赌更新我的软件将处理这个问题。”
管理编程言语依靠和插件的团队并不需求常常发布版别。有时,在你从计算机传输文件到实时服务器的时分,更新PHP /Ruby/ Python / SQL版别能够处理调试问题。本地更新很少能够帮助修正源代码中的bug,除非你的版别现已过时得无可救药。所以,值得一试!
29.“我应该更有条理而且去学习Git ……下周就去研讨它。”
开源版别操控包Git在程序员中十分受欢迎。相关于其他的竞争对手,它供给了更简单的学习曲线,而且被许多在线代码库房,如Github上和Bitbucket运用。开发人员很简单拖延去学习Git的行动,由于它关于初学者而言明显是有难度的。可是一旦你知道了根本指令,那么Git就是小菜一碟。而且它还能使调试版别操控愈加清晰。
30.“算了,我仍是从头再开端吧。”
有时分,在你绞尽脑汁花费数个小时之后,或许要做的仅仅将你的作业文件移动到归档目录(或删去它们),再从头开端就能够了。可是,考虑到从前现已消耗的时刻,你很难下定这个决心。可是,当我束手无策时,我往往会挑选从头开端,由于这样才有或许找到完结项目的正确道路。