CSDN编者注:这条和第1条好像有点对着来嘛。
开发人员就应该能够写代码。
去年做了很多面试,我主要会测人们的思路,如何在白板上实现比较简单的算法。我往往从这样的问题开始:
已知Pi可以用函数4 * (1 – 1/3 + 1/5 – 1/7 + …) 计算,项越多越精确,请写一个函数,计算小数点后5位的Pi。
这是一个10行C#就能搞定的问题。但许多面试者甚至毫无思路。所以我只好接着问这样的问题:
已知圆的面积是Pi乘以半径的平方,写一个函数计算。
居然有超过半数的人无法用任何语言完成这个函数!唉,开发人员应该能够写代码,现在连这个都成有争议的观点了……
设计模式弊大于利。
软件设计,尤其是好的软件设计千变万化,没法有意义地用模式去总结,尤其是那些大家记得住的几个模式,而且这些模式也太抽象了,其实没几个人真正记得住太多。所以设计模式其实没啥用。而另一方面呢,又有太多的人为设计模式的概念迷住,想方设法到处用——结果代码中往往除了一些毫无意义的单例和抽象工厂之外,几乎找不到什么设计。
代码少少益善。
如果用户看不到你的工作,才是做对了。荣耀在别处。
其他比较热门的答案还有:
21. 性能真的很重要。
22. 企业应用很滑稽。需要n年经验是胡扯。计算机科学学位课程纯忽悠。(链接)
23. 单元测试无助于编写好代码,软件工程大多数所谓的最佳实践都是为了防范烂程序员搞太多破坏。(链接)
24. 每个程序员都应该熟悉现代计算机的体系结构。
25. 编写小方法。
26. PHP真烂!
27. C++是有史以来最差的语言之一。(链接)
28. 大多数职业程序员都很烂。
29. 要想成为程序员,你得先学会打字。
30. 编程之外的各种流程规矩越多,代码质量越差。(链接)
资深的游戏程序员James Hague(名博Prog21是也)也看到此文,觉得这些观点都没啥太大争议性。他专门写了一篇博客,又提出了他自认为更具争议性的观点,其中不少观点指向他之前发表的其他文章:
31. 计算机科学专业应该只作为辅修学位。
32. 新程序员还没有弄懂分解问题和将解决方法变成代码之前,就给他们介绍面向对象是大错特错。
33. 复杂的编译器优化几乎都没什么价值,即使能得到更快的代码。它们会大大降低编译速度而且很可能产生难以处理的bug,使性能问题的处理更加困难。
34. 不能允许没有十年编程经验的人编写供他人使用的库。忽略此条,抱憾终身。
35. 代码丑陋与否无关紧要。有没有格式与代码是否工作、可靠没什么关系,可以让自动化工具来整理格式。
36. 纯函数式编程没啥用。但在命令式代码里杂用一些效果不错。
37. 软件工程的既定思维反而会阻碍你做出伟大作品。
对这些编程观点你怎么看?你有什么值得争议的惊人之语吗,欢迎晒出来大家共赏析。