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

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

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

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


当前回答

后藤很好!(这足够有争议了吗) 有时……所以给我们选择吧!例如,BASH不需要去。也许有一些内部原因,但仍然。 此外,goto是汇编语言的构建块。没有if语句!:)

其他回答

意见:没有函数定义和返回类型会导致代码灵活易读。

这种观点可能更适用于解释型语言,而不是编译型语言。需要一个返回类型和一个函数参数列表,这对于智能感知来自动记录你的代码是很好的,但它们也是限制。

不要误解我的意思,我不是说扔掉返回类型,或者参数列表。他们有自己的位置。在90%的情况下,它们是利大于弊的。

在某些时候和场合,这是有用的。

从长远来看,不需要探索所有形式的测试,QA也可以做得很好

很多地方似乎都有一种“方法”,即“我们怎么做”。这似乎隐含地排除了其他方法。

从长远来看,这是一个严重的问题,因为QA的主要功能是将错误归档并修复它们。

如果你不能找到尽可能多的bug,你就不能很好地做到这一点。例如,当您排除方法时,由于过于依赖黑盒,您开始忽略整个可发现的编码错误类别。这意味着,您正在使整个编码错误类无法修复,除非有人偶然发现它。

潜在的问题似乎往往是管理层+员工。有这个问题的管理者似乎对计算机科学和/或他们团队的价值主张有狭隘的想法。他们倾向于创建反映他们的方法的团队,以及测试方法的白名单。

我并不是说你可以或应该一直做所有的事情。让我们面对现实吧,对于给定的产品来说,一些测试方法只是在浪费时间。有些方法在产品成熟度的特定级别上更有用。但我认为,测试组织缺少的是挑战自己学习新事物的能力,并将其应用于整体绩效。

这里有一个假设的对话可以总结:

我:你测试了启动脚本10年,却对shell脚本及其工作原理一无所知?! 测试人员:是的。 我:权限? 测试人员:安装程序会这样做 我:平台,发布特定的依赖? 测试者:我们为此存档bug 我:错误处理? 测试人员:当错误发生时,客户支持会给我们发送一些信息。 我:好吧…(开始考虑在stackoverflow中写帖子…)

程序员和开发人员是有区别的。例如:程序员编写分页逻辑,开发人员在页面上集成分页。

为了生产优秀的软件,你需要领域专家和优秀的开发人员一样多。

永远不要以单例方式实现任何东西。

您可以决定不构造多个实例, 但始终确保您的实现可以处理更多。

我还没有发现任何使用单例的场景 才是正确的选择。

在过去的几年里,我对此进行了一些非常激烈的讨论, 但最后我总是对的。