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

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

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

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


当前回答

goto有一些(非常少)合法的用途(特别是在C中,作为异常处理的替身)。

其他回答

“程序员是天生的,不是后天培养的。”

继承是邪恶的,应该被摈弃。

事实是,在任何情况下,聚合都更好。静态类型的OOP语言不能避免继承,它是描述方法想从类型中得到什么的唯一方法。但是动态语言和鸭子类型可以没有它。Ruby mixins比继承强大得多,也更可控。

大多数“用户友好”的第四代语言(包括SQL)都是毫无价值的、被高估的垃圾,不应该被广泛使用。

4gl通常有一个冗长和模糊的语法。尽管4gl应该允许“非技术人员”编写程序,但你仍然需要“技术人员”来编写和维护它们。

一般来说,4GL程序更难编写,更难阅读,更难优化。

应该尽量避免使用4gl。

我有两个:

设计模式有时是糟糕程序员编写糟糕代码的一种方式——“当你有一把锤子时,整个世界看起来都像钉子”的心态。如果有什么我讨厌听到的是两个开发人员通过模式创建设计:“我们应该使用命令与facade…”

不存在所谓的“过早优化”。你应该在你觉得这样做太痛苦之前对你的代码进行分析和优化。

开发人员过度使用数据库

通常情况下,开发人员在DBMS中存储的数据应该以代码或文件的形式存在。我曾经见过一个一列一行的表,它存储“系统密码”(与用户表分开)。我看到过存储在数据库中的常量。我见过的数据库足以让一个成年程序员哭出来。

这些讨厌的程序员对DBMS有一种神秘的敬畏——数据库可以做任何事情,但他们不知道它是如何工作的。dba实践一种黑魔法。它还允许责任转移:“数据库太慢了”,“是数据库做的”和其他借口是常见的。

如果不加检查,这些程序员就会继续开发数据库中的数据库,系统中的系统。(这个反模式有一个名字,但我忘了它是什么。)