zoukankan      html  css  js  c++  java
  • 盘点那些争议最大的编程观点,你是什么看法呢?


    编程相对来说是一门专业性非常强的技术工种,全世界也有大量的编程人员,每天都有人讨论什么编程语言最好,优秀程序员的标准等。接下来让我们来看看那些争议最大的编程观点。

    1.   业余时间不会为了好玩而编程的程序员,永远比不上那些以编程为乐的同学。

    我认为即使是最聪明、最有才华的人,如果只是将编程作为工作,也永远成不了真正优秀的程序员。以编程为乐的人会在业余时也搞些小项目,或者弄弄各种不同的编程语言和编程思想。

    2.   单元测试无助于编写优秀代码。

    编写单元测试的唯一理由仅仅是确保已经能工作的代码不会出问题。先写测试或者按测试来写代码是无比荒谬的。如果在代码之前写测试,你都不知道边界情况是什么。虽然能让代码通过测试,但是在没有预见到的情况时还是会出问题。而且,好的开发人员会尽量降低内聚性,新增代码不可能使已有的出问题。

    3.   唯一能放之四海而皆准的最佳实践,是"用脑子思考"。

    太多人喜欢追逐众多时髦技术,想方设法把各种方法、模式、框架用到不适合的地方。新技术和名人大牛的观点并等于适用于实际情况。

    4.   大多数代码中的注释实际上都是代码重复的恶性表现。

    给代码加注释是必须的,但不是每一条都要加上注释。糟糕、错误、过时和误导性的注释还会造成更坏的结果。很多人认为应该把精力放在提高代码的可读性上。许多教材还在宣扬什么注释甚至比代码还重要,结果导致了大量废话连篇的注释。其实在代码中具备特殊意义的,或者相对较复杂的,需要加注释说明,简单的代码,很简单一眼就能看懂的,就没必要再加注释了。

    5.   依赖Google没什么错。

    这种言论肯定会让那些学富五车的饱学之士恼火。但是谁都需要查资料不是?正确答案就是正确答案,管它是来自哪本秘籍或者私相传授,还是Google出来的呢?重要的是能真正理解,并给出成功的编程解决方案,让客户和老板满意。

    6.    程序员不是生而平等的。

    经理往往认为程序员A==程序员B,因为他们的年头差不多。实际上,一个开发者的效能可以是另一个的十倍甚至百倍。

    7.   我实在不能理解为什么C语言是最适合大学教学的第一门语言,明明它都已经过时了。

    之前某网站上就有人有这样的疑问,并因为提问方式有引战嫌疑,被知乎管理员重新编辑发布。

    编辑前

    编辑后

    大学教育,尤其是 985、211 这种国内最顶尖的一批高校,应该注重通识教育而不是专项教育,在专业上更要注重基础、底层、偏向原理。只有掌握了最核心的东西,学起那些偏技能的东西才会很快很轻松。

    时间能够证明一切,C 语言已经走过了四十多年的历史,但是在今天,任然常年霸占 TIOBE 编程语言排行榜前三,甚至榜首,这足以说明它是一门经久不衰的语言。

    8.   如果你只会一门语言,无论多么精通,仍然不是优秀的程序员。

    有人认为,只要精通了C#、Java或者其他什么你学会的第一门语言,就足够了。

    任何人只局限于一种语言,都无法充分发挥自己的潜力。而且缺乏求知欲和探索意愿,都不符合优秀程序员的特质。

    现在也有很多人往全栈工程师发展,很多人不明白,其实全栈的真正意义并不在于多学了几门技术,而在于说,你拥有了将一个想法完整的转化为一个产品的能力。这种能力让你从一个不能脱离生产线的螺丝钉、不能离开公司独立生存的雇员,变成了一个对自己的工作,对自己的生活,对自己的事业拥有选择权的一个人。

    9.   偶尔写写垃圾代码也无妨。

    前面我还分享过代码整洁之道,今天就跟你们说写垃圾代码了。但是有时候一些特定任务,快而脏的代码能搞定就行了。打工人谁不想偷个懒呢,模式、ORM、SRP(单一职责原则)啥的算了吧。

    10.   print语句是有效的调试方式。

    我认为用 System.out.println 之类的输出语句调试代码挺好。这经常比正式的调试要快,而且可以比较不同运行的输出结果。但是投入生产环境之前一定要删除这些语句,或者将它们放入日志语句中。

    11.   你的工作是要把自己摘出来。

    前面说了我们写注释是方便他人也方柏霓自己,你写的软件都应该让其他任何开发人员花一点时间就能理解并接手。软件应该设计优雅,代码清晰和一致,格式干净,文档合适,每日构建,有恰当的版本管理。你越这样做,你对公司的价值越大。不要害怕被别人顶替,如果你教会别人到代替你的职位,那现有位置就没有你的位置,你就只能升职啦~

    12.   getter和setter被极度滥用了。

    成千上万的人都说公共字段是罪恶的,应该设为私有,提供getter和setter。我觉得其实没啥不同,除非程序是多线程的,或者访问方法中有业务或者展示逻辑(这可够怪的)。我并不是赞成用公共字段,只是反对用访问方法或者属性包一下,就号称封装、信息隐藏了。

    13.   SQL也是代码,请等而视之。

    SQL和C#, Java或者其他对象、过程语言没什么不同,请注意代码的格式、可读性和可维护性。

    14.   UML图被高估了。

    有些图当然是有用的,比如Composite模式的类图。但许多UML图都毫无价值。

    15.   可读性是代码最重要的方面。

    比正确性还重要。可读的代码也容易修正,容易优化、修改、理解。而且其他开发者也能从中获益。

    16.   XML被大大高估了。

    很多随波逐流跳上XML这黑船的人都没过脑子。XML用于Web应用不错,因为它本来就是干这个的。此外的问题定义、设计思路应该尽量不用XML。

    17.   软件开发只是一份工作而已。

    工作不是全部,为什么会有“打工人”词出现,就是因为这个词代表的含义符合大众的心理。但是很多人都忘了,我们不是为了工作而工作,工作是为生活的美好服务。许多开发者也忘记了写程序不是最终目的,它只是为我们提供条件,去高高兴兴地做生命中最重要的事情。

    18.   开发人员就应该能够写代码。

    这个都成了有争议的观点了吗……

    19.   设计模式弊大于利。

    软件设计,尤其是好的软件设计千变万化,没法有意义地用模式去总结,尤其是那些大家记得住的几个模式,而且这些模式也太抽象了,其实没几个人真正记得住太多。所以设计模式其实没啥用。而另一方面呢,又有太多的人为设计模式的概念迷住,想方设法到处用——结果代码中往往除了一些毫无意义的单例和抽象工厂之外,几乎找不到什么设计。

    20.   代码少少益善。

    冗长繁杂的代码是没有必要的,少而精才是目的。

    其他不同的观点还有:

    21. 性能真的很重要。

    22. 企业应用很滑稽。需要n年经验是胡扯。计算机科学学位课程纯忽悠。

    23. 单元测试无助于编写好代码,软件工程大多数所谓的最佳实践都是为了防范烂程序员搞太多破坏。

    24. 每个程序员都应该熟悉现代计算机的体系结构。

    25. 编写小方法。

    26. PHP真烂!

    27. C++是有史以来最差的语言之一。

    28. 大多数职业程序员都很烂。

    29. 要想成为程序员,你得先学会打字。

    30. 编程之外的各种流程规矩越多,代码质量越差。

    31. 计算机科学专业应该只作为辅修学位。

    32. 新程序员还没有弄懂分解问题和将解决方法变成代码之前,就给他们介绍面向对象是大错特错。

    33. 复杂的编译器优化几乎都没什么价值,即使能得到更快的代码。它们会大大降低编译速度而且很可能产生难以处理的bug,使性能问题的处理更加困难。

    34. 不能允许没有十年编程经验的人编写供他人使用的库。忽略此条,抱憾终身。

    35. 代码丑陋与否无关紧要。有没有格式与代码是否工作、可靠没什么关系,可以让自动化工具来整理格式。

    36. 纯函数式编程没啥用。但在命令式代码里杂用一些效果不错。

    37. 软件工程的既定思维反而会阻碍你做出伟大作品。

    你的看法是什么呢?来评论区留言跟我说说吧~

    C语言是每个想要学习编程的小伙伴首要学习的语言~如果你也想成为程序员,想要快速掌握编程,这里为你分享一个学习基地!

    里面有资深专业软件开发工程师,在线解答你的所有疑惑~   C语言入门“so easy”资料包含:编程入门、游戏编程、课程设计、黑客等。 点击进入学习基地

  • 相关阅读:
    C3P0的详细配置说明
    关于commons-fileupload组件上传文件中文名乱码问题
    手写JDBC
    使用try-with-resource遇到的问题
    Java基础学习总结——Java对象的序列化和反序列化
    IDEA查看第三方jar包的源代码时出现Decompiled.class file, bytecode version:52.0 (Java 8)的解决方案
    软件工程课程周进度报告 第六周
    地铁合作的第二周
    第六周进度总结
    地铁合作的第一周
  • 原文地址:https://www.cnblogs.com/zm131417-/p/13942172.html
Copyright © 2011-2022 走看看