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

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

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

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


当前回答

2空格缩进。

没有讨论。它只是必须这样;-)

其他回答

“一切都应该尽可能简单,但不能更简单。”——爱因斯坦。

懒惰的程序员是最好的程序员

懒惰的程序员通常会找到方法来减少花在写代码上的时间(尤其是大量相似或重复的代码)。这通常转化为公司/团队中的其他开发人员可以从中受益的工具和工作流。

当开发人员遇到类似的项目时,他可能会创建工具来引导开发过程(例如,创建一个与公司的数据库设计范例一起工作的DRM层)。

此外,诸如此类的开发人员经常使用某种形式的代码生成。这意味着同一类型的所有错误(例如,代码生成器没有检查所有方法上的空参数)通常可以通过修复生成器来修复,而不是修复该错误的50多个实例。

一个懒惰的程序员可能会多花几个小时来完成第一个产品,但会为你节省几个月的时间。

代码生成很糟糕

我讨厌那些要求你使用代码生成(或复制&粘贴)来处理简单事情的语言,比如JavaBeans的getter和setter。

c#的AutoProperties是朝着正确方向迈出的一步,但是对于具有字段、属性和构造函数参数的dto来说,你仍然需要大量的冗余。

I'd say that my most controversial opinion on programming is that I honestly believe you shouldn't worry so much about throw-away code and rewriting code. Too many times people feel that if you write something down, then changing it means you did something wrong. But the way my brain works is to get something very simple working, and update the code slowly, while ensuring that the code and the test continue to function together. It may end up actually creating classes, methods, additional parameters, etc., I fully well know will go away in a few hours. But I do it because i want to take only small steps toward my goal. In the end, I don't think I spend any more time using this technique than the programmers that stare at the screen trying to figure out the best design up front before writing a line of code.

我得到的好处是,我不必不断地处理那些因为我碰巧以某种方式破坏了它而不再工作的软件,并试图找出停止工作的原因和原因。

C必须死。

当另一种语言(比如D)可用时,自愿用C编程应该因疏忽而受到惩罚。