你最具争议的编程观点是什么?

363

这绝对是主观的,但我想尽量避免它变成争论性的。如果人们适当地对待它,我认为这可能是一个有趣的问题。

这个问题的想法来自于我的答案"你最喜欢的编程语言中讨厌的五件事是什么?"的问题的评论线程。我认为 C# 中的类应该默认是 sealed 的 - 我不会在问题里解释我的理由,但我可能会在回答这个问题时写一个更详细的解释。我很惊讶在评论中的争论之激烈(目前有 25 条评论)。

那么,你持有哪些有争议的观点呢?我宁愿避免那种几乎没有依据的具有相当少基础的争论(例如花括号放置),但例子可能包括像“单元测试实际上并不是非常有帮助”或“public 字段实际上是可以接受的”。对我来说,重要的是你对自己的观点有理由支持。

请阐述您的意见和推理 - 我鼓励人们投票支持那些论证充分且有趣的观点,无论您是否同意它们。

407个回答

872
那些业余时间不为乐而编程的程序员永远无法像那些这样做的人一样变得优秀。
我认为即使是最聪明、最有才华的人,除非把编程视为超越工作的东西,否则他们永远不会成为真正优秀的程序员。也就是说,他们在业余时间做一些小项目,或者只是在业余时间玩弄许多不同的语言和想法。
(注意:我并不是说优秀的程序员仅仅做编程,但他们确实比9点到5点的编程更多做其他事情。)

769

唯一应该一直使用的“最佳实践”是“动动脑筋”。

太多人一味追随流行,试图将方法、模式、框架等强加到不需要它们的事物上。仅仅因为某些东西是新的,或者因为某个受尊敬的人有一个观点,并不意味着它适用于所有情况 :)

编辑: 为了澄清 - 我并不认为人们应该忽视最佳实践、有价值的意见等。只是人们不应该盲目地跟风,而是要思考:为什么这个“东西”如此出色,它是否适用于我正在做的事情,以及它带来了哪些好处/坏处?


710

大多数代码中的注释实际上是一种有害的代码重复形式。

我们大部分时间都在维护别人(或自己)编写的代码,而质量差、不正确、过时、误导性的注释必定是代码中最烦人的工件之一。

我认为很多人最终会忽略它们,特别是那些花盒式的怪物注释。

更好的方式是专注于使代码易读、根据需要进行重构并尽量减少惯用语和怪癖。

另一方面,许多课程教授注释几乎比代码本身更重要,导致出现“这行代码添加到发票总额”的注释风格。


710

“谷歌一下”没问题!

是的,我知道这会冒犯一些人,因为他们花了数年时间背诵或拥有堆积如山的编程书籍,现在这些资源正在被任何人都可以在几秒钟内访问的工具所替代。不过你不应该因此而针对使用这种工具的人。

我经常听到将问题搜索答案归咎于谷歌的批评,但这真的很无稽。首先,必须承认每个人都需要参考资料。你不可能知道所有东西,你需要查找信息。既然承认了这一点,那么信息来源真的很重要吗?你是在书中查找,还是在谷歌上查找,甚至是从你幻想中的说话青蛙那里听到的,这真的很重要吗?并不重要,一个正确的答案就是一个正确的答案。

重要的是你理解了这些材料,将其用作成功的编程解决方案的手段,并且客户/雇主对结果感到满意。

(尽管如果你从幻觉的说话青蛙那里得到答案,你可能仍然需要一些帮助)


693

XML被高估了

我认为在动脑子之前,太多人都跃入了XML的浪潮...... 对于网络内容,XML非常好用,因为它就是为此而设计的。否则,在决定使用它之前,一些问题定义和设计思路应该先行。

这是我的五分钱意见。


678

并非所有程序员都是平等的

经常有管理人员认为,DeveloperA == DeveloperB,仅因为他们拥有相同的经验水平等等。实际上,一个开发者的表现可能比另一个开发者快10倍甚至100倍。

虽然这样说可能存在政治风险,但有时我感觉需要指出,尽管几个团队成员可能看起来技能平均,但情况并非总是如此。我甚至看到过领导开发人员“无望”,而初级开发人员做了所有实际工作——我确保他们得到了信用,哈哈。 :)


612

我不明白为什么人们认为Java绝对是最好的“第一”编程语言,适合在大学里教授。

首先,我认为第一个编程语言应该突出需要学习控制流和变量,而不是对象和语法。

其次,我认为那些没有在C/C++中调试内存泄漏经验的人无法完全理解Java带来的好处。

此外,自然的进展应该是从“我该如何做到这一点”到“我该如何找到能够实现这一点的库”,而不是相反。


539

如果你只掌握一种语言,无论你掌握得有多好,你都不是一个优秀的程序员。

似乎有这样一种态度,认为一旦你很擅长C#、Java或其他你最初学习的语言,那么你就拥有了一切。我不相信这种说法-我所学过的每一种语言都教会了我关于编程的新东西,这些新知识让我能够在其他语言中运用。我认为任何局限于一种语言的人都无法发挥出他们应有的水平。

这也表明了我对一个真正优秀的程序员所期待的品质-好奇心和愿意尝试新事物的精神缺失。


535

性能确实很重要。


488

打印语句是调试代码的有效方法

我认为通过在代码中添加System.out.println(或适用于您所使用语言的其他打印语句)来调试代码是完全可以的。通常,这比调试更快,并且您可以将打印输出与应用程序的其他运行进行比较。

只需确保在进入生产环境时移除打印语句(或者最好将其转换为日志记录语句)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接