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

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

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

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


当前回答

有用和干净的高级抽象比性能重要得多

一个例子:

我经常看到同行花费数小时编写复杂的spprocs,或者为了“性能”而返回不直观的匿名类型的大量LINQ查询。

它们可以实现几乎相同的性能,但代码更加清晰直观。

其他回答

还没有测试它的争议,但可能有潜力:

最好的代码行是你从未写过的那行。

源代码控制:除了SourceSafe

另外:排他锁定是邪恶的。

我曾经在某个地方工作过,他们认为排他锁意味着您可以保证当您签入时,人们不会覆盖其他人的更改。问题在于,为了完成任何工作,如果文件被锁定,开发人员只会在有机会时将本地文件更改为可写,并合并(或覆盖)版本的源代码控制。

关系数据库是在浪费时间。改用对象数据库!

关系数据库供应商试图欺骗我们,让我们相信世界上唯一可扩展的、持久的和安全的存储就是关系数据库。我是一个认证的DBA。你是否曾经花了几个小时试图优化一个查询,却不知道哪里出了问题?关系数据库不允许您在需要时创建自己的搜索路径。你把应用速度的控制权拱手让给了素未谋面的人,他们并不像你想象的那么聪明。

当然,有时在维护良好的数据库中,他们会为复杂的查询提供快速答案。但你为此付出的代价太高了!每次要读取数据项时,都必须选择编写原始SQL,这是很危险的。或者使用Object关系映射器,这会增加更多的复杂性和超出你控制的事情。

更重要的是,你被禁止提出智能搜索算法,因为每次该死的往返数据库花费你大约11毫秒。这太过分了。想象一下,您知道这个超级图算法,它将回答一个特定的问题,这个问题甚至可能无法用SQL表达!,在适当的时候。但是,即使您的算法是线性的,而有趣的算法不是线性的,也不要将它与关系数据库结合起来,因为枚举一个大表将花费您数小时!

将其与SandstoneDb或Gemstone for Smalltalk进行比较!如果你喜欢Java,试试db4o吧。

因此,我的建议是:使用对象- db。当然,它们并不完美,有些查询速度会比较慢。但是你会惊讶的发现很多人会更快。因为加载对象不需要在SQL和域数据之间进行所有这些奇怪的转换。如果您确实需要某个查询的速度,对象数据库有您应该信任的查询优化器:您的大脑。

要成为一名程序员,你必须会打字。

这在那些不知道如何打字,但坚持认为他们可以像任何打字员一样用两根手指搜索和啄的人之间存在争议,或者他们真的不需要花那么多时间打字,或者智能感知减轻了打字的需要……

我从来没有遇到过会打字的人,但坚持认为打字没什么区别。

参见:编程中最肮脏的小秘密

没有面向对象编程这种东西。