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

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

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

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


当前回答

程序员不应该接触Word(或PowerPoint)

除非你正在开发一个文字或文档处理工具,否则你不应该使用只产生二进制blobs的文字处理器,就此而言:

生成的XML文件是二进制blob

程序员应该编写纯文本文档。程序员编写的文档只需要传达意图,而不是格式。它必须能够使用编程工具链进行生产:编辑器、版本控制、搜索实用程序、构建系统等等。当你已经拥有并知道如何使用这个工具链时,使用其他任何文档制作工具都是在浪费时间和精力。

当需要为非程序员生成文档时,应该使用轻量级标记语言,例如reStructuredText(如果您正在编写纯文本文件,您可能正在编写自己的轻量级标记),并从中生成HTML、PDF、S5等。

其他回答

开发人员过度使用数据库

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

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

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

关系数据库对于web应用程序来说非常糟糕。

例如:

螺纹评论 标签云 用户搜索 维护记录视图计数 提供撤销/修订跟踪 多步的向导

我的一个:

长开关语句是你的朋友。真的。至少在c#中是这样。

人们倾向于避免和不鼓励其他人使用长switch语句,因为它们“不可管理”和“具有糟糕的性能特征”。

好吧,在c#中,switch语句总是自动编译为哈希跳转表,所以如果你需要简单的分支到多个分支,实际上使用它们是性能方面的最佳选择。同样,如果case语句被智能地组织和分组(例如按字母顺序),那么它们就不是无法管理的。

在1970年1月1日之前,真和假是相反的……

观点:单元测试不需要预先编写,有时甚至根本不需要。

推理:开发人员不擅长测试他们自己的代码。我们所做的。这就是为什么我们通常有测试团队或QA团队。

大多数情况下,我们编写的代码与其他需要单独测试的代码交织在一起,因此我们最终会跳过模式框框来提供可测试性。并不是说这些模式不好,而是它们有时会增加不必要的复杂性,所有这些都是为了单元测试……

... 这通常是行不通的。编写一个全面的单元测试需要大量的时间。通常是我们不愿意付出的时间。测试越全面,如果测试对象的接口发生变化,就会变得越脆弱,迫使重写不再编译的测试。