盘点程序员开发遇到的30个问题
1、我不知道该删掉还是重写
  回归曾经写的源代码,总有⼀种想要重新返⼯的冲动,逻辑性差,冗余代码多,让⼈难以理解。但是,如果功能没出现问题,千万不要去修改。这是我经常要⾯对的困扰,相信也困扰了其他不少的软件开发者。
  2、⼀开始架构时就该查Github
  相信绝⼤多数开发⼈员都知道Github,它上⾯每天都会发布的⼀些神奇的开源项⽬。所有语⾔的程序员都会利⽤⽹络,为已存在的项⽬创建分⽀,添加项⽬wiki描述,或者创建⾃⼰的代码库,这些都为各种各样的项⽬的插件和模板提供了很多丰富的资源。
  3、为什么这个脚本要依赖这么多库
  说到⼀些越来越被⼴泛使⽤的计算机语⾔,像Java和Objective-C,库⽂件的数量也不断增加。很明显可以看出,构建⼀个框架就需要许多的基础库,甚⾄⼀些Java的插件也需要很多⼤量的附加⽂件。有时候这些乱七⼋糟的东西会很让⼈⼼烦,但是⾄少它能运⾏。
  4、⽹上⼀定有解决办法
  遇到困难时,我的第⼀反应就是上⽹查资料,很多程序员会在论坛上发布他们的问题,最终这些问题都会被解决并存档。Google会很神奇地选择⼀些跟你的问题相关的关键字,你就能够轻⽽易举地得到⼀些对你有帮助的讨论信息。不幸的是,有时候对于⼀些特定的问题,相关的信息还不是很多。
  5、有这个功能的插件吗
  何必要多此⼀举插件是扩展任何程序或者⽹站⽤户接⼝的很好的资源。另外它们还为开发者提供了⼀些定制以及独特的选项。如果没有可⽤的插件,那你为什么不⾃⼰创建⼀个呢?
  6、对于⽹站项⽬,我好担⼼坑爹的InternetExplorer
  使⽤IE渲染⽹页遇到的各种困难,我就不提了,从5。5版本到IE9-IE10,对于浏览器的⽀持问题的争议就⼀直不断。Web开发⼈员会很害怕⽹页调试,使⽤IE6进⾏渲染更是噩梦。,幸好那些⽇⼦已经慢慢成为历史了。
  7、有些逻辑语句,并不符合逻辑
脚本发生错误怎么办
  有⼀些逻辑语句,像if/else循环,for循环,while循环,do循环…等等,还有很多。在回顾⼀些源代码时,我总是尽⼒想弄明⽩我的逻辑是怎么回事。我经常会回头更新代码,让逻辑更清晰。
  8、我花30分钟写个函数,运⾏它却要花2个⼩时
  这不是⼗年前的⼀个有关编程的故事吗?当⼀切都在按照你所所期待的顺利进⾏着,突然某个函数输出了⼀个致命的错误,所以你不得不回头删除代码块,试图定位出错的代码⾏。尽管这会让你筋疲⼒尽,但是⼀旦到错误的原因,问题解决之后,你⼜会⽴马感到浑⾝轻松。
  9、读了⼏篇博客后,我才意识到我之前所做的全是错的
  我总是喜欢根据⾃⼰的编程思想直⼊主题,但是如果事情没有按照我原本的计划进⾏时,会导致很多⿇烦。有很多次,我在做项⽬时,途中都遇到了⿇烦,最后只得查博客和相关⽂章去寻求帮助。然后⼜发现我的整个⽅法完全错了,还不如从头开始更容易点。所以从长远来看,在项⽬开始时多做点研究反⽽会节省时间
  10、StackOverflow上有好⼼⼈或许能帮助我
  我已经数不清有多少次,遇到问题都是通过StackOverflow得到解决的。只要你提出问题,社区⾥就会有很多聪明,友好的热⼼⼈愿意帮助你。所有的在线论坛⾥,它绝对是⽀持软件编程和前后端web开发的最全⾯的⽹站。
  11、这个问题竟然就因为少了个右括号
  调试是我们经常要⽤的⽅法,向前两步,回退⼀步,再向前两步,如此反复。为了查函数命名或者
变量作⽤域等错误,盯着代码看了数个⼩时,结果发现只是缺少了⼀个括号,你会有种哭笑不得的感觉。所有的时间都浪费在了⼀个⼩⼩的语法错误上,那⼀刻,你会觉得⾃⼰既是天才,⼜是傻⼦。
  12、喝杯咖啡,休息⼀下
  有的时候你需要起⾝离开显⽰器,连续敲了⼏个⼩时的键盘,如果中间休息⼀下,会对你的⾝体有益。⼤多数健康指南都建议每30-60分钟休息⼀次。但是还是要取决于你的需要,如果你感觉中间暂停去休息会打断你的思维,让你很不爽,那就最好不要了。
  13、我应该先把这个项⽬放⼀放,稍后在处理它
  休息的另⼀种⽅式就会暂停你⼿中的项⽬,⽽不是离开你的电脑桌。或许你还有其他的⼯作要做,那就继续下⼀项任务。⽐起试图在⼀个花了5个⼩时还没解决的问题上继续挣扎,这会是⼀种更合理地分配时间和资源的⽅式。
  14、我在想或许古典⾳乐能够激发我的编程潜能呢
  有⼀种说法认为古典⾳乐能促进植物的早期⽣长,我个⼈更偏爱古典⾳乐错综复杂的注解和⾳乐理论。爵⼠,钢琴,⼤型乐队,优雅的⾳乐在全球各地的⼈类⽂化都占有⼀席之地。所以编程的时候听点美妙的⾳乐会让你调试起来更得⼼应⼿呢。当然也有可能,会让你更加⼼烦意乱。
  15、或许现在是验证鲍尔默峰值理论的好时机
  我相信很多读者都知道鲍尔默峰值,它是根据⼀个特殊的XKCD漫画得来的。简单来说,这个理论认为程序员的编码能⼒在喝了定量的酒后,会达到⼀个峰值。这个起源于SteveBallmer的些古怪滑稽的姿态被认为是像⼀个醉汉在说胡话。尽管这有点讽刺,因为鲍尔默在微软从来算不上⼀个真正的程序员,猜想我们只有等其他⼈来实践这个理论了。
  16、是谁动了我的代码?
  这个听起来有点像妄想症,但是有时候你很想知道是谁趁你补觉的时候写的这些东西。回顾过去⼏周或者⼏个⽉的项⽬,会给你⼀种晕乎乎的感觉。有时候你会不记得你写过这些东西—尽管上周你还在参与这个项⽬。好像是我很疯狂地写的代码,你却从来不知道…
  17、完全不知道这是神马东东
  你遇到的最糟糕的情况应该是在研究源代码时,完全不知道它是在⼲什么,可能是来⾃你⾃⼰的项⽬,也可能是其他⼈的项⽬,但是问题都⼀样。这个时候,你必须确定是否值得花费更多的时间去寻其它解决⽅案或者仔细剖析代码,研究它到底是⼲什么的。
  18、直接google下错误提⽰
  鉴于多年的PHP经验,我不得不说Google真的是调试问题的最好的⼩伙伴。这对于Objective-C,C++,Java和其他的主流语⾔的境况⼀定是相同的。错误提⽰信息对我们很有⽤,但是你必须记住不同的错误代码代表什么意思。它读起来更像是被翻译过的计算机语⾔。幸好有这么多在线⽀持,让我们确定这些错误信息代表的真正意思。
  19、今天应该到此为⽌了,可我真的想把这个问题解决了
  我们都知道想要退出时的那种极度沮丧的感觉,但是同时⼜觉得放弃不是正确的选择。你很想继续前进,出新的解决⽅案来。但是如果到最后还是浪费了⼀个⼩时,那该怎么办?我对这种情况并不陌⽣,它会让⼈特别沮丧。
  20、哦买糕的,为什么我都没写注释呢
  如果涉及到最基本的前端代码HTML/CSS/JS时,并不需要总是写注释。但是如果是⽐较复杂的脚本和程序时,就需要写⼀些标准的注释以便你⼏个⽉,甚⾄⼏年后来重温这些代码。有时候你会忘记给函数,参数,输出格式以及其他重要的数据写注释,这⽆疑会导致发⽣bug时你不得不调试整个脚本去寻求解决⽅案,感到⾮常困惑,到那个时候你会觉得要是有⼀些有⽤的注释该多好啊。
  21、这个20分钟之前还好好的呢
或许构建程序时最让⼈沮丧的是,明明刚才还好好的东西,没有改过任何代码,这会⼉却运⾏不起来了。我发誓这种情况绝对有发⽣,⽽且它没有任何意义—也许其它程序运⾏的是缓存版本呢然后也有⼀些时候我们只更新了⼀丁点代码,结果整个程序都崩溃并且完全停⽌运⾏。那就会回退到最新的备份版本,从那⼉继续吧。
  22、忘了⼀个该死的分号,整个程序都崩了
⼏乎我⽤过的所有的编程语⾔都要求每⾏结束时都要有结束符,但并不是所有的语⾔都这样,不过C/C++系列语⾔绝对是这样。当你忘记添加分号结束符时,这是多明显的错误!但是解析器并不不理解,便抛出⼀个致命的错误。接下来就得再花费20分钟时间去研究代码,查技术错误。最终发现只是少了⼀个分号。哈,这就是软件调试的乐趣。
  23、我想要招⼈来帮我修复bug,得花多少钱哪
  雇佣程序员的想法听起来很诱⼈,但显然在经济上是不可⾏的。另外,如果你连⾃⼰的的错误都没解决,你⼜怎么能从这些错误中学到东西呢?经历多次失败,最后当你真正理解了编程的概念后,你会很有成就感。但有时候脑⼦⾥难免还是会闪过这种想法。
  24、快速浏览下HackerNews,肯定能提⾼我的效率
  很多程序员对于浏览软件和创业等社会新闻的偏爱选择都是HackerNews⾸页。它有⼤量的关于⾃由职业,时间管理,软件开发,创业发布和筹资资⾦等⽅⾯很棒的信息。尽管HN能够模拟出通过⾃我教育更加⾼效的感觉,但其实是在浪费你的时间。每隔⼏⼩时去快速浏览下新闻也没那么糟糕。
  25、这个API怎么没有说明⽂档啊?
  最让⼈沮丧的事情就是使⽤插件或者框架时,⾃带的⽂档很糟糕,你只好⾃⼰去深⼊阅读源代码。我更喜欢让开发⼈员花时间专门为项⽬设计⼀个⽂档页,对所有的参数和选项都给予解释,有可能的话,给出⼀些⽰例代码。但是很遗憾,这种情况⼏乎不可能。所以最简单的办法就是远离那些附带⽂档很糟的⼯作,以免给⾃⼰带来⿇烦。
  26、我真希望我已经对数据库进⾏备份了
  在编写和调试代码的时候,我有时候会想不到备份。然⽽,数据备份能够帮助我们回退到做出某个特定的改变之前的版本,这对⼀个即时的服务器环境是特别有⽤的,有些变化瞬间就会发⽣。切记在本地保留对⽹站⽂件和数据库的拷贝,以备急需。你可能会觉得这样太⿇烦了,但是总⽐你重建⼀个SQL数据库强多了。
  27、怎样才能快速解决这个问题?
  如果花费了数⼩时后,仍然未到⼀个解决办法,很明显你需要⼀个新的⽅案了。程序员总是想要先实现功能,然后再去设计和美化界⾯。先确定⼀个最快的,最准确的解决⽅案,并尽⼒去实现和完成,然后再去考虑美化界⾯的问题就会很轻松了。
  28、我敢打赌,你更新下我的代码,这个问题就解决了
  那些为编程语⾔提供依赖包和插件的团队并不需要频繁地发布产品。有时候从本地传送⽂件到服务器的时候,更新PHP/Ruby/Python/SQL版本可能会解决⼀些调试问题。除⾮你的版本实在太旧了,否则本地更新很少能够帮助你修复源代码中的bug,不过还是值得⼀试!
  29、我真的该好好学习Git了,…还是下周吧
  开源的版本控制控制软件Git在程序员中⼴受欢迎。跟其他竞争对⼿相⽐,它提供了⼀条更简单的学习曲线,被应⽤在了许多在线仓库像Github和Bitbucket 中。可能对初学者来说,会有点难度,但是⼀旦你掌握了基本命令,你会发现使⽤GIt就是⼩菜⼀碟。它还让版本控制更加清晰。
  30、算了,我还是从头开始吧
  有时候尝试了数⼩时的解决⽅案后,你可能需要将你的⼯作⽂件归档(或者删掉它们),重新开始。这个决定的最⼤难点就是你会考虑到前⾯数⼩时的⼯作会毫⽆收获。但是如果你保留之前的想法,项⽬却毫
⽆进展时。重新开始,才有可能让项⽬顺利完成。
图⽂来源于⽹络