【51CTO.com快译】
每个程序员需要认识到哪些糟糕的编程方法,以便避而远之?这个问题最初出现在知识共享网站Quora上,一些见解独特的人士在这个网站上回答引人注目的问题。
The Firehose Project的首席技术官兼联合创始人肯·马扎卡(Ken Mazaika)在Quora上回答了这个问题:
有35个常见的糟糕编程习惯。
糟糕习惯可能不止这些,而这是我所能想起来的35个糟糕的编程习惯。我把最重要的两个糟糕习惯列在第17个和第35个,因为我希望你能看好整个回答。我认为你读后会有所收获。
1. 搞得你好像无所不知。别犯傻了,你不可能做到无所不知。那也很正常。
2. 整天开会。如果你把大部分时间花在开会上,就应该考虑更合理地利用时间了。
3. 有人批评你的代码时,反应过大。最优秀的开发人员愿意抱着一种开放、坦率的心态,探讨自己编写的代码,以及如何改进代码。
4. 过早地放弃。太多的程序员离解决办法只差一步,就在快要解决问题前一刻放弃。
5. 拒绝寻求帮助。通过向别人阐述自己的问题,你常常会发现解决办法。这就是所谓的“小黄鸭调试法”(rubber
duck debugging)。
6. 将责任推卸给他人。最可贵的开发人员敢于为自己编写的代码负责、并承担责任。
7. 编写过早优化其他代码的代码。在大多数情况下,虽然全面优化代码可以获得性能方面的优势,但是结果很难理解代码,这是不值得的。
8. 忽视其他开发人员的意见。作为开发人员,最好的学习和成长途径之一就是与经验比自己更丰富的开发人员结对编程。要乐于寻求别人的意见。
9. 不知道如何优化代码。有些情况下性能是个大问题,比如以下方面存在问题:
·算法复杂性
·低效的数据库操作
·第三方的API
·N+1查询
出现性能问题时,你需要知道如何分析性能问题,明白什么要花时间研究,以及如何解决这些问题。
10. 低估与团队其他成员之间的关系。你受雇来编写代码。但是你也需要能够与团队的其他成员处理好关系。
11. 搞办公室政治。有时候,其他开发团队会做出你觉得不正确的决定。但是只要你能完成你团队的目标,最好绕开其他团队的错误,而不是针锋相对。
12. 一遇到压力,就呆若木鸡。在用户无法使用产品的场景下,你面临巨大的压力。你要养成保持冷静、完成工作的能力。
13. 没有能力编写糟糕代码。在现实世界中,需要结合下列因素做一些取舍:
·最后日期
·实验
·需要立即修复的紧急错误
你要有这种心态:可以编写糟糕代码,以满足眼前的需求。
14. 针对简单问题却采用过度设计。面对容易处理的问题,别开发让人困惑的解决方案。
15. 行为像老板,不像领导人。太多的开发人员不知道如何管理其他人。你应该是其他开发人员寻求指导和指点的那个人,而不是仅仅下达逐步指示。
16. 使用不当的工具来处理工作。别再根据“这是我熟悉的东西”来做决定。你需要敢于使用不同的技术、语言和框架。
17. 拒绝研究编程问题。谷歌搜索引擎是程序员的工具箱中最强大的工具之一。
18. 不好好掌握工具。由于你要花大量的时间来使用文本编辑器、命令行及编写代码的其他工具等工具,有必要熟练掌握。花时间学习让你更高效的技巧和窍门。
19. 避免错误消息。代码错误经常发生。它们还通常包括一些很宝贵的信息,表明什么出了错,为何会出错,哪几行代码触发了问题。你应该找出错误信息,而不是竭力避免错误信息。
20. 掰着指头算时间。最优秀的开发人员享受编写代码的时光,常常废寝忘食、乐此不疲。哪怕你编程了10000小时,也好像一如既往地热爱编程。
21. 拒绝从错误中汲取教训。犯错后,应当缩小范围,明白这三个方面:
1. 犯错的根本原因是什么?
2. 可以落实流程或行为,防止将来出现这种类型的错误吗?
3.越早发现错误,影响就越小。
拒绝从错误中汲取教训会导致你一再犯错。
22. 害怕丢掉代码。要知道,花三天时间编写错误的解决方案会让你更深刻地认识到如何沦为分析瘫痪(analysis
paralysis)的受害者。
23. 过分偏爱自己的开发工具包。一些开发人员喜欢名为vim的文本编辑器。有些人讨厌它,喜欢名为emacs的文本编辑器。但是在一些场景下,使用一种而不是另一种是明智之举。
24. 将自己与开发者社区脱离开来。到处都有编程社区。由于Railsbridge和Girl Develop
It之类的组织,以及RubyConf和RailsConf之类的活动以及其他会议,许多社区等着你去发现。
25. 没有推特帐户。Ruby、Rails、JavaScript等大型开源项目及其他工具的开发者都拥有推特帐户。花点时间在推特上,那样你有机会了解设计你所用软件的那些人的想法。
26. 不回馈社区。你应该尽早拥抱编程社区。如果你这么做,会认识到编程社区有多大的帮助、多么友好。
27. 花好多时间来解决问题,并且解决了问题,却没有记入文档。你经常会遇到网上还没有人解决的某个奇怪的、很具体的问题。花时间自行搞定后,你有必要写帖子分享或交流,那样就能帮助下一个遇到这个问题的人。
28. 代码中编写的注释不是太多就是太少。对开发人员来说,注释是必不可少的说明。但与凡事讲究个度,注释也应该适可而止。
29. 过于懒惰,不愿向产品经理告知问题的最新情况。产品经理获得及时的最新情况,并知道产品的状态(在合理范围内)很重要。如果你不及时告知问题的最新情况,这会带来许多头痛的问题。
30. 经常把无关的功能捆绑到同一个项目中。很容易养成把两个无关的功能分类到同一个项目中这种陋习。如果两个不同的系统规模都很大,厘清问题会来得异常复杂。
31. 与团队的其他成员一起认真地提出合理的计划,结果发生某个意想不到的事情后,全面放弃计划,完全改变路线。没有比这更糟糕的事情了。
32. 坚持执行经过全面考虑,却明显行不通的计划。唯一比最后一刻放弃计划更糟糕的莫过于拒绝停止执行糟糕的主意。
33. 一再为编写的糟糕代码而道歉。如果你发现自己一再为编写的糟糕代码而道歉,这可能意味着你需要重新评估最后期限。
34. 没有把精力花在进行代码审查这项工作上。开发团队是个整体,确保每个成员贡献的代码符合团队的高标准,这是每个团队成员义不容辞的责任。
35. 没有花足够的时间来辅导团队的其他开发人员。确保你的团队在经常学习、成长以及提高编程能力是你应尽的工作。
我坚信,每个开发人员都在不断完善之中。所以有这些坏习惯完全很正常,没什么大不了。实际上,作为开发人员或其他任何类型的专业人员,提升自我的关键在于遵循这三个步骤:
1.承认自己有坏习惯。
2.找到改变坏习惯的动机。
3.消除坏习惯,养成好习惯,从而将这种动机付诸实践。 |