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

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

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

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


当前回答

简单Vs优化

我相信编写既简单又最佳的代码是非常困难的。

其他回答

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.

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

我认为使用try/catch异常处理比使用简单的返回代码和相关的公共消息传递结构来传递有用的错误消息更糟糕。

用try/catch块乱扔代码不是解决方案。

只是将异常传递到堆栈上,希望上面的内容会做正确的事情或 生成信息错误并不是解决方案。

认为您有机会系统地验证适当的异常处理程序可以解决透明对象或opague对象中可能出现的任何错误,这是不现实的。(还要考虑到后期绑定/外部库以及随着系统的发展,调用堆栈中不相关函数之间不必要的依赖关系)

返回代码的使用很简单,可以很容易地系统地验证覆盖范围,如果处理得当,就会迫使开发人员生成有用的错误消息,而不是太常见的堆栈转储和模糊的I/O异常,即使对最聪明的最终用户来说,这些异常也“异常”毫无意义。

--

我最后的反对意见是使用垃圾收集语言。不要误会我的意思。在某些情况下,我喜欢它们,但在服务器/MC系统中,它们在我看来没有位置。

GC并不是绝对正确的——即使是设计得非常好的GC算法也可能基于依赖关系图中不明显的循环引用而在对象上停留太长时间,甚至永远停留。

遵循一些简单模式并使用内存计算工具的非GC系统不会有这个问题,但在设计和测试方面需要比GC环境做更多的工作。这里的权衡是,在非GC测试期间,内存泄漏非常容易发现,而找到与GC相关的问题条件则要困难得多。

内存是便宜的,但当你泄露昂贵的对象,如事务句柄、同步对象、套接字连接……在我的环境中,如果不对软件描述进行重大的基本更改,那么您可以坐下来让语言为您操心,这种想法是不可想象的。

90%的程序员都是非常糟糕的程序员,实际上我们所有人都没有任何工具来评估我们当前的能力水平(尽管我们通常可以回顾过去并意识到我们曾经是多么糟糕)

我不打算发布这个,因为它会惹恼所有人,我并不是真的想要一个负分或其他什么,但是:

A,这不是问题的重点吗

B)这个帖子中的大多数“答案”都证明了这一点

前几天我听到一个很好的类比:编程能力的差异至少和运动能力一样大。我们当中有多少人可以加入一个职业球队,并真正提高他们的机会?

远离Celko!!!!

http://www.dbdebunk.com/page/page/857309.htm

我认为使用代理主键比使用“自然”主键更有意义。


@ocdecio: Fabian Pascal给出了(在他的书《数据库管理中的实际问题》的第三章中,引用于你链接的页面的第3点)作为选择键的标准之一,那就是稳定性(它总是存在并且不会改变)。当一个自然键不具有这样的属性时,必须使用一个代理键,原因很明显,您在注释中暗示了这一点。

你不知道他写了什么,你也懒得去检查,否则你会发现你实际上同意他的观点。这里没有什么争议:他说的是“不要教条主义,根据情况调整一般的指导方针,最重要的是,思考,用你的大脑,而不是教条主义/食谱/大师的话”。

不会编码的架构师是无用的。

这听起来有点苛刻,但并非不合理。如果你是一个系统的“架构师”,但对所使用的技术没有一定的实际参与,那么你如何获得开发团队的尊重呢?你如何影响方向?

架构师需要做更多的事情(与利益相关者会面,与其他团队谈判,评估供应商,编写文档,进行演示等等)但是,如果您从未看到架构师签入代码……小心!