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

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

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

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


当前回答

开发人员不应该测试他们自己的软件

开发和测试是两个截然相反的学科。开发就是建造,测试就是拆除。有效的测试需要一种特定的心态和方法来发现开发人员的错误,找到他们假设中的漏洞,以及他们逻辑中的缺陷。大多数人,包括我自己在内,根本无法将自己和自己的代码置于这样的审查之下,并且仍然保持客观。

其他回答

我有争议的观点是,“While”结构应该从所有编程语言中删除。

你可以很容易地复制而使用“重复”和一个布尔标志,我只是不相信这是有用的,有两个结构。事实上,我认为同时拥有“重复……”直到”和“While..”一种语言中的EndWhile”会让新程序员感到困惑。

更新-额外说明

新程序员在使用While时常犯的一个错误是,他们认为一旦测试条件标记为false,代码就会中断。因此,如果While测试在代码进行到一半时标记为假,则假定While循环爆发。使用Repeat时就不会犯这么多错误。

只要只有一个循环类型,我实际上并不关心这两个循环类型中哪一个被保留。我选择Repeat而不是While的另一个原因是“While”功能用“Repeat”写比用“While”写更有意义。

第二次更新: 我猜,我是目前唯一一个得分为负的人,这意味着这实际上是一个有争议的观点。(不像你们其他人。哈!)

代码越少越好!

如果用户说“就这样?”,而你的工作仍然是隐形的,那么你的工作就做对了。荣耀可以在其他地方找到。

硬编码很好!

真的,在许多情况下更有效,更容易维护!

我看到常数放入参数文件的次数真的非常频繁 你改变了水的冰点还是光速?

对于C程序,只需将这些类型的值硬编码到头文件中,对于java程序,只需将这些值硬编码到静态类中等等。

当这些参数对你的程序行为有巨大的影响时,你真的想对每一个变化做一个回归测试,这似乎是硬编码值更自然。当东西存储在参数/属性文件中时,人们很容易认为“这不是一个程序变更,所以我不需要测试它”。

另一个好处是,它可以防止人们在参数/属性文件中混淆重要值,因为根本没有任何重要值!

良好的性能VS优雅的设计

它们并不相互排斥,但我不能忍受过度设计的类结构/框架,它们完全不了解性能。我不需要有一个字符串的new This(new That(new Whatever());创建一个对象,它会告诉我现在是凌晨5点哦,顺便说一下,距离奥巴马的生日还有217天,还有两天就是周末。我只是想知道健身房开门了没有。

保持两者之间的平衡是至关重要的。当您需要将所有处理器抽出来做一些密集的事情(比如读取tb级的数据)时,代码就会变得令人讨厌。把优雅留给那些消耗10%资源的地方,这可能超过90%的代码。

你的工作就是让自己失业。

当您为您的雇主编写软件时,您所创建的任何软件都应该以这样一种方式编写,即任何开发人员都可以使用它,并且可以用最少的努力理解它。它设计良好,编写清晰一致,格式化干净,在需要的地方有文档记录,按照预期每天构建,检入存储库,并进行了适当的版本控制。

如果你被公共汽车撞了,被解雇了,被解雇了,或者离开了工作岗位,你的雇主应该能够在片刻的通知中取代你,下一个人可以接替你的角色,拿起你的代码,最多在一周内启动并运行。如果他或她不能做到这一点,那么你就失败了。

有趣的是,我发现有了这个目标,我对雇主来说更有价值了。我越努力成为可有可无的人,我对他们就越有价值。