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

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

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

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


当前回答

两个人的想法比一个人的好

我坚信结对编程是提高代码质量和编程效率的首要因素。不幸的是,对于那些认为“更多人手=>更多代码=> $$$!”

其他回答

使用存储过程

除非您正在编写由不可重用的SQL查询组成的大型过程函数,否则请将数据库的存储过程移到版本控制中。

所有源代码和注释都应该用英文编写

用英语以外的语言编写源代码和/或注释会降低可重用性,如果你不理解它们所使用的语言,就更难调试。

SQL表、视图和列也是如此,特别是在使用缩写时。如果它们没有缩写,我可能能够在线翻译表/列名,但如果它们被缩写,我所能做的就是选择并尝试破译结果。

有一次,我从一位同事那里看到了以下内容:

compareto (b) == 0;

我说他不能在一般情况下这样假设,但他只是笑了。

几乎在所有情况下,评论都是邪恶的:http://gooddeveloper.wordpress.com/

单元测试不会帮助你写出好的代码

进行单元测试的唯一原因是确保已经工作的代码不会崩溃。首先编写测试,或者为测试编写代码都是荒谬的。如果在编写代码之前编写测试,您甚至不知道边界情况是什么。您的代码可能通过了测试,但在不可预见的情况下仍然会失败。

此外,优秀的开发人员会保持较低的内聚性,这将使新代码的添加不太可能对现有内容造成问题。

事实上,我将进一步推广,

软件工程中的大多数“最佳实践”都是为了防止糟糕的程序员造成太大的破坏。

他们的作用是指导糟糕的开发人员,防止他们犯愚蠢的错误。当然,由于大多数开发人员都很糟糕,这是一件好事,但优秀的开发人员应该得到通过。