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

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

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

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


当前回答

WordPress是一个CMS(从技术上讲,确实如此)。

https://stackoverflow.com/questions/105648/wordpress-is-it-a-cms

其他回答

原始数据类型是不成熟的优化。

有些语言只使用一种数据类型,即标量,它们做得很好。其他语言就没有这么幸运了。开发人员只是把“int”和“double”扔进去,因为他们必须写一些东西。

What's important is not how big the data types are, but what the data is used for. If you have a day of the month variable, it doesn't matter much if it's signed or unsigned, or whether it's char, short, int, long, long long, float, double, or long double. It does matter that it's a day of the month, and not a month, or day of week, or whatever. See Joel's column on making things that are wrong look wrong; Hungarian notation as originally proposed was a Good Idea. As used in practice, it's mostly useless, because it says the wrong thing.

大多数开发人员对此一无所知

是的. .好了。我说过了。我从我认识的所有开发者身上发现了这一点。只有少数是真正好的。只有少数人明白代码应该被测试……面向对象的开发方法实际上是在帮助你。让我感到沮丧的是,有些人获得了开发人员的头衔,而实际上他们所能做的只是复制和粘贴一些源代码,然后执行它。

无论如何……我很高兴像stackoverflow这样的项目已经开始了。这对开发人员来说是件好事。有没有更好的办法?我做对了吗?也许我可以用这个技巧来加快速度,等等……

但是不行……大多数开发人员只是学习一种工作需要的语言,并坚持使用它,直到他们自己变成了老而暴躁的开发人员,不知道发生了什么。他们得到的只是一大笔薪水,因为他们只是比你大。

好吧……IT界的生活是不公平的,我将采取措施在未来忽略这些人。万岁!

如果你是一个开发人员,你应该会写代码

去年我做了很多面试,在我的面试部分,我应该测试人们的思维方式,以及他们如何在白板上实现简单到中等的算法。我一开始的问题是:

假设可以使用函数4 *(1 - 1/3 + 1/5 - 1/7 +…)来估计圆周率,使用更多的项来获得更高的精度,编写一个计算圆周率的函数,其精度为小数点后5位。

这是一个应该让你思考的问题,但对于一个经验丰富的开发人员来说不应该是遥不可及的(它可以用大约10行c#来回答)。然而,我们的许多候选人(应该是中介机构预先筛选的)甚至无法开始回答这个问题,甚至无法解释他们将如何回答这个问题。所以过了一段时间,我开始问一些更简单的问题,比如:

给定圆的面积是π乘以半径的平方,写一个函数来计算圆的面积。

令人惊讶的是,超过一半的候选人不能用任何语言编写这个函数(我可以阅读大多数流行的语言,所以我让他们使用他们选择的任何语言,包括伪代码)。我们有“c#开发人员”,他们不能用c#编写这个函数。

我对此感到很惊讶。我一直认为开发人员应该会写代码。现在看来,这似乎是一个有争议的观点。当然是在面试中!


编辑:

在评论中有很多关于第一个问题是好是坏的讨论,以及你是否应该在面试中问这么复杂的问题。我不打算在这里深入研究这个问题(这是一个全新的问题),除了说你在很大程度上错过了文章的重点。

是的,我说过人们在这个问题上无法取得任何进展,但第二个问题很琐碎,许多人在这个问题上也无法取得任何进展!任何自称为开发人员的人都应该能够不假思索地在几秒钟内写出第二个问题的答案。很多人做不到。

观点:永远不要在“调试”和“发布”版本之间有不同的代码

主要原因是发布代码几乎从未经过测试。最好让在测试中运行的代码与在野外运行的代码相同。

硬编码很好!

真的,在许多情况下更有效,更容易维护!

我看到常数放入参数文件的次数真的非常频繁 你改变了水的冰点还是光速?

对于C程序,只需将这些类型的值硬编码到头文件中,对于java程序,只需将这些值硬编码到静态类中等等。

当这些参数对你的程序行为有巨大的影响时,你真的想对每一个变化做一个回归测试,这似乎是硬编码值更自然。当东西存储在参数/属性文件中时,人们很容易认为“这不是一个程序变更,所以我不需要测试它”。

另一个好处是,它可以防止人们在参数/属性文件中混淆重要值,因为根本没有任何重要值!