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

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

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

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


当前回答

其中一个我已经琢磨了很久了:

数据就是系统。

流程和软件是为数据构建的,而不是相反。

没有数据,过程/软件就没有什么价值。没有流程或软件,数据仍然有价值。

一旦我们理解了数据,它是做什么的,它是如何相互作用的,它在不同阶段以不同的形式存在,只有这样才能构建一个解决方案来支持数据系统。

成功的软件/系统/过程似乎有一个敏锐的意识,如果不是狂热的正念,在任何给定的时刻数据在“哪里”。

其他回答

Web服务绝对很糟糕,也不是未来的发展方向。他们的效率低得可笑,而且他们不能保证订单交货。Web服务绝不应该在同时编写客户端和服务器的系统中使用。它们对于米老鼠混搭类型的应用程序非常有用。它们绝对不应该用于任何类型的面向连接的通信。

这种立场让我和同事们进行了一些非常热烈的讨论,因为web服务是一个非常热门的话题。任何强制使用web服务的项目都是注定要失败的,因为它显然已经从管理层那里得到了荒谬的要求。

我坚信非托管代码不值得这么麻烦。与查找内存泄漏相关的额外维护性开销(即使是最好的程序员偶尔也会引入这种开销)远远超过从c++这样的语言获得的性能。如果Java, c#等不能得到你需要的性能,买更多的机器。

我真的不喜欢当人们告诉我使用getter和setter而不是使变量公共时,你应该能够获得和设置类变量。

我完全同意如果是改变对象中的一个变量在你的对象中,你不会得到这样的东西:a.b.c.d.e = something;但我更愿意使用:a.x = something;然后a.setX(东西);我认为a.x =某物;实际上,在同一个例子中,它们都更容易阅读,而且比设置/获取更漂亮。

我不明白为什么要这样做:

void setX(T x) { 这个->x = x; }

T getX () { 返回x; }

这就需要更多的代码,需要更多的时间,你要一遍又一遍地做,这只会让代码更难阅读。

Having a process that involves code being approved before it is merged onto the main line is a terrible idea. It breeds insecurity and laziness in developers, who, if they knew they could be screwing up dozens of people would be very careful about the changes they make, get lulled into a sense of not having to think about all the possible clients of the code they may be affecting. The person going over the code is less likely to have thought about it as much as the person writing it, so it can actually lead to poorer quality code being checked in... though, yes, it will probably follow all the style guidelines and be well commented :)

在开发代码时牢记优化是一个好主意。

每当我这样说时,人们总是回答:“过早的优化是万恶之源”。

但我并不是说在调试之前进行优化。我甚至没有说优化,但当你在设计代码时,要记住这可能会成为一个瓶颈,并编写它,这样就有可能重构它的速度,而不会撕裂API。

Hugo