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

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

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

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


当前回答

观点:显式变量声明是一件很棒的事情。

我永远无法理解让开发人员浪费大量时间追踪由变量名输入错误引起的运行时错误,而不是简单地让编译器/解释器捕捉它们的“智慧”。

没有人能给我更好的解释,“好吧,这节省了时间,因为我不需要写'int I;'。”Uhhhhh……是的,当然,但是追踪一个运行时错误需要多少时间呢?

其他回答

复制/粘贴不是反模式,事实上它有助于避免产生更多的错误

我的经验法则——只输入不能复制/粘贴的东西。如果创建类似的方法,类或文件-复制现有的并更改所需的内容。(我不是在谈论复制应该放在单个方法中的代码)。

我通常从不输入变量名——要么复制粘贴,要么使用IDE自动补全。如果需要一些DAO方法-复制类似的方法并更改所需的内容(即使将更改90%)。对某些人来说,这可能看起来是极度的懒惰或缺乏知识,但我几乎从来没有处理过由拼写错误引起的问题,而且它们通常很难捕捉(如果没有在编译级别检测到)。

每当我偏离我的复制粘贴规则,开始输入东西时,我总是拼写错误(这只是一个统计数据,没有人能立即写出完美的文本),然后花更多的时间试图找出哪里。

整天在Stackoverflow上回答问题的程序员可能并没有在做他们应该做的工作。

使用较短的变量名是可以的

但不是嵌套循环中的索引。

Jon Bentley的《Programming Pearls》不再是一本有用的大部头。

http://tinyurl.com/nom56r

Linq2Sql并没有那么糟糕

我看到过很多诋毁Linq2Sql的帖子。我知道这并不完美,但什么才是完美的?

就我个人而言,我认为它有它的缺点,但总的来说,它可以很好地用于原型设计,或开发中小型应用程序。当我考虑到它为我从编写枯燥的DAL代码中节省了多少时间时,我不能抱怨,特别是考虑到我们不久前拥有的替代方案。