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

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

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

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


当前回答

让您的业务逻辑远离DB。或者至少,保持它非常精简。让DB做它应该做的事情。让代码做它应该做的事情。时期。

If you're a one man show (basically, arrogant & egotistical, not listening to the wisdom of others just because you're in control), do as you wish. I don't believe you're that way since you're asking to begin with. But I've met a few when it comes to this subject and felt the need to specify. If you work with DBA's but do your own DB work, keep clearly defined partitions between your business objects, the gateway between them and the DB, and the DB itself. If you work with DBA's and aren't allowed to do your DB work (either by policy or because they're premadonnas), you're very close to being a fool placing your reliance on them to get anything done by putting code-dependant business logic in your DB entities (sprocs, functions, etc.). If you're a DBA, make developers keep their DB entities clean & lean.

其他回答

尽管我完全支持测试驱动开发(TDD),但我认为在开发人员开始对问题的解决方案进行原型化的整个开发周期之前,还有一个至关重要的步骤。

我们经常陷入试图遵循我们的TDD实践来寻找一个可能被误导的解决方案,因为我们对这个领域不够了解。简单的原型通常可以阐明这些问题。

原型是很好的,因为与首先编写测试相比(有时),您可以快速地浏览和丢弃更多的代码。然后,您可以开始开发过程,在空白的石板,但更好的理解。

我认为Java应该通过精简的本地库包装器来支持特定于系统的特性。

换句话说,从几乎所有人的角度来看,我认为Sun决定要求Java只支持可移植特性是一个巨大的错误。

无数年之后,SWT出现并解决了编写可移植的本机小部件UI的基本问题,但那时微软被迫将Java派生为c#,并且已经编写了大量原本可以用文明Java完成的c++。现在世界运行在c#、VB、Java、c++、Ruby、Python和Perl的混合语言上。除了SWT程序外,所有Java程序的外观和操作都很奇怪。

如果Java在本机库的基础上提供了薄包装器,那么人们就可以完全用Java编写swt等效程序,并且随着事情的发展,我们可以用Java开发可移植的明显的本机应用程序。我完全支持可移植应用程序,但如果这种可移植性是在中间件UI(和其他特性)库的开放市场中实现的,而不是通过简单地将用户菜单减少为垃圾或用Swing伪造UI,那就更好了。

我猜想Sun认为ISV会受到Java的限制,然后世界上所有新的PC应用程序都会神奇地在Sun上运行。不错的尝试。他们最终没有得到应用程序,也没有让语言起飞,直到我们可以将其用于仅逻辑的服务器后端代码。

如果事情做得不一样,也许本地应用程序就不会死掉。

后藤很好!(这足够有争议了吗) 有时……所以给我们选择吧!例如,BASH不需要去。也许有一些内部原因,但仍然。 此外,goto是汇编语言的构建块。没有if语句!:)

不是很有争议,但是… AJAX早在这个术语被创造出来之前就已经存在了,每个人都需要“放手”。人们用它做各种各样的事情。但是没有人真正关心它。

然后突然嘣!有人创造了这个术语,每个人都加入了AJAX的潮流。突然之间,人们成了AJAX的专家,好像动态加载数据的“专家”以前并不存在似的。我认为这是导致互联网被残酷摧毁的最大因素之一。还有“Web 2.0”。

大于运算符(>,>=)应该被弃用

我试着用“小于”而不是“大于”的偏好编码了一段时间,它卡住了!我不想回去,事实上,我觉得在这种情况下,每个人都应该按照我的方式去做。

考虑常见的数学“范围”符号:0 <= i < 10

这很容易在代码中近似,你已经习惯了在中间重复变量并用&&连接:

if (0 <= i && i < 10)
    return true;
else
    return false;

一旦你习惯了这种模式,你就再也不会觉得愚蠢了

if ( ! (i < 0 || i >= 9))
    return true;

同样的方法。

长序列的关系变得更容易处理,因为操作数倾向于非递减顺序。

此外,操作符<的优先级被铭记在c++标准中。在某些情况下,operator=是根据it来定义的!(a<b || b<a))