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

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

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

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


当前回答

不断测试

您必须编写测试,并且必须首先编写它们。编写测试会改变编写代码的方式。它会让你思考你想要它实际做什么,然后再开始写一些东西,它能做所有事情,除了你想要它做的。

它也给你目标。看着你的测试变绿会让你有额外的信心,因为你完成了一些事情。

它还为您为边缘情况编写测试提供了基础。由于您一开始就针对测试编写代码,因此您的代码中可能有一些用于测试的钩子。

没有理由不测试你的代码。如果你不这样做,那你只是懒惰。我还认为您应该先进行测试,因为这样做的好处超过了编写代码所花费的额外时间。

其他回答

“谷歌一下”是可以的!

是的,我知道这冒犯了一些人,他们多年的密集记忆和/或辉煌的编程书籍开始在一种任何人都可以在几秒钟内访问的资源中倒下,但你不应该反对使用它的人。

我经常听到有人用谷歌搜索问题的答案,但这确实毫无意义。首先,必须承认每个人都需要参考资料。你不是什么都知道,你需要去查资料。我承认,你从哪里得到的信息真的重要吗?你是在书上查到的,还是在谷歌上查到的,还是从你幻觉中的会说话的青蛙那里听到的,这有关系吗?不。正确的答案就是正确的答案。

重要的是你理解这些材料,将其作为成功编程解决方案的手段,并且客户/雇主对结果感到满意。

(虽然如果你是从幻觉中会说话的青蛙那里得到答案,你可能还是应该得到一些帮助)

用户不是傻瓜——你才是。

很多次我听到开发者说“某某人是个白痴”,我的回答通常是“他可能是个白痴,但你允许他这么做。”

不断测试

您必须编写测试,并且必须首先编写它们。编写测试会改变编写代码的方式。它会让你思考你想要它实际做什么,然后再开始写一些东西,它能做所有事情,除了你想要它做的。

它也给你目标。看着你的测试变绿会让你有额外的信心,因为你完成了一些事情。

它还为您为边缘情况编写测试提供了基础。由于您一开始就针对测试编写代码,因此您的代码中可能有一些用于测试的钩子。

没有理由不测试你的代码。如果你不这样做,那你只是懒惰。我还认为您应该先进行测试,因为这样做的好处超过了编写代码所花费的额外时间。

匿名函数很糟糕。

我正在自学jQuery,虽然它是一种优雅且非常有用的技术,但大多数人似乎都将其视为最大化匿名函数用户的某种竞争。

函数和过程命名(以及变量命名)是我们在编程中所拥有的最强大的表达能力。将函数作为数据传递是一项伟大的技术,但使它们匿名并因此非自文档化是一个错误。这样就失去了表达代码含义的机会。

我有争议的观点: OO编程被极大地高估了[并被视为一颗银弹],实际上它只是工具箱中的另一个工具,没有别的!