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

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

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

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


当前回答

1. 你不应该一直遵循网络标准。

2. 你不需要注释你的代码。

只要陌生人能听懂就行。

其他回答

您永远不会使用足够多的语言,因为每种语言只适合一小部分问题,而且混合使用语言太难了。

典型的例子:Java应该只在规范经过深思熟虑(因为有很多相互依赖关系,这意味着重构的地狱)和处理具体概念时才使用。Perl应该只用于文本处理。C语言应该只在速度压倒一切时使用,包括灵活性和安全性。键值对应该用于一维数据,CSV用于二维数据,XML用于层次数据,DB用于更复杂的数据。

在产品代码中没有反射的位置

反射破坏了静态分析,包括重构工具和静态类型检查。反射还打破了开发人员对代码的正常假设。例如:向类中添加一个方法(它不会影响类中的其他方法)应该永远不会有任何影响,但是当使用反射时,其他一些代码段可能会“发现”新方法并决定调用它。实际上,确定这样的代码是否存在是很难的。

我确实认为在代码生成器中使用反射和测试是很好的。

是的,这确实意味着我试图避免使用反射的框架。(Java缺乏适当的编译时元编程支持,这太糟糕了)

理解“做什么”至少和知道“如何”做一样重要,而且总是比知道解决问题的“最佳”方法重要得多。领域特定的知识对于编写好的软件通常是至关重要的。

我有争议的观点是John Carmack(游戏邦注:代表作有ID Software, Quake等)并不是一个优秀的程序员。

不要误解我的意思,在我看来他是一个非常聪明的程序员,但当我注意到quake源代码中的“#define private public”这一行后,我不禁认为他是一个无论如何都能完成工作的人,但在我的定义中,他不是一个好程序员:) 这个观点让我陷入了很多激烈的讨论;)

人脑是开启所有锁的万能钥匙。

世界上没有任何东西能让你的大脑运转得更快。相信我,这不是哲学上的,而是实际的。就意见而言,他们就像下面一样


1)永远不要超出编程语言指定的界限,一个简单的例子就是C和c++中的指针。不要误用它们,因为你可能会得到该死的分割错误。

2)始终遵循编码标准,是的,你读的是正确的,编码标准对你的程序有很大的影响,毕竟你的程序是由机器执行的,但要被其他大脑理解:)