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

这个问题的想法来自于我对“你最讨厌的语言的哪五件事?”问题的回答。我认为c#中的类在默认情况下应该是密封的——我不会把我的理由放在这个问题上,但我可能会写一个更完整的解释来回答这个问题。我对评论中的讨论热度感到惊讶(目前有25条评论)。

那么,你有什么有争议的观点?我宁愿避免那些基于相对较少的基础而导致相当宗教的事情(例如,大括号放置),但例如可能包括“单元测试实际上并没有多大帮助”或“公共字段确实是可以的”之类的事情。重要的是(至少对我来说)你的观点背后是有理由的。

请提出你的观点和理由——我鼓励人们投票给那些有充分论证和有趣的观点,不管你是否恰好同意这些观点。


当前回答

如果它不是原生的,它就不是真正的编程

根据定义,程序是由计算机运行的实体。它直接与CPU和操作系统对话。不直接与CPU和操作系统对话的代码,而是由其他直接与CPU和操作系统对话的程序运行的代码,不是程序;这是一个脚本。

在Java出现之前,这只是简单的常识,完全没有争议。突然出现了一种脚本语言,它具有足够大的功能集,可以完成以前专属于程序的任务。作为回应,微软开发了。net框架和一些在其上运行的脚本语言,并设法通过在他们的开发工具中逐渐减少对真正编程的支持,以支持。net脚本来进一步搅浑水。

尽管它可以完成许多您以前必须编写程序才能完成的事情,但任何种类的托管代码仍然是脚本,而不是编程,用它编写的“程序”确实并且总是共享脚本的性能特征:它们运行得更慢,并且比真正的(本机)程序完成相同任务所需的内存要多得多。

人们称其为编程,这是对每个人的伤害,因为他们简化了定义。这会导致整体质量下降。如果你试图让编程变得如此简单,以至于任何白痴都能做到,那么你最终会得到一大堆自以为能编程的白痴。

其他回答

这个怎么样:

垃圾收集器实际上会损害程序员的工作效率,并使资源泄漏更难发现和修复

请注意,我谈论的是一般的资源,而不仅仅是内存。

手动停止程序是一种有效的、经过验证的查找性能问题的方法。

可信吗?对大多数人来说并非如此。真的吗?绝对的。

程序员的判断比必要的要多得多。

看看这些帖子中所有被认为是“邪恶”或“可怕”的事情吧。

程序员喜欢数据结构。

见证所有关于类、继承、私有与公共、内存管理等以及如何分析需求的讨论。

偶尔写一些垃圾代码是可以的

有时,一段快速而肮脏的垃圾代码就是完成特定任务所需要的全部。模式、orm、SRP等等……抛出一个控制台或Web应用程序,写一些内联sql(感觉不错),然后抛出需求。

删除类。 . net Framework中隐式处理异常的类的数量(类的方法)。和一个哑巴共事是很困难的。

自己编写是一个有效的选择。

根据我的经验,当涉及到使用第三方代码来解决问题时,似乎有太多的热情。人们通常不会想到自己解决问题的办法。不要误解我的意思,我并不是要宣扬永远不要使用库。我的意思是:在您正在考虑使用的可能的框架和模块中,添加自己实现解决方案的选项。

但为什么要编写自己的版本呢?

Don't reinvent the wheel. But, if you only need a piece of wood, do you really need a whole cart wheel? In other words, do you really need openCV to flip an image along an axis? Compromise. You usually have to make compromises concerning your design, in order to be able to use a specific library. Is the amount of changes you have to incorporate worth the functionality you will receive? Learning. You have to learn to use these new frameworks and modules. How long will it take you? Is it worth your while? Will it take longer to learn than to implement? Cost. Not everything is for free. Although, this includes your time. Consider how much time this software you are about to use will save you and if it is worth it's price? (Also remember that you have to invest time to learn it) You are a programmer, not ... a person who just clicks things together (sorry, couldn't think of anything witty).

最后一点是有争议的。