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

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

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

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


当前回答

C(或c++)应该是第一种编程语言

第一语言不应该是简单的,它应该是建立学生的思想,为严肃的计算机科学做准备的语言。 C语言是完美的,它迫使学生考虑内存和所有低级别的东西,同时他们可以学习如何构造代码(它有函数!)

c++有一个额外的优势,它真的很糟糕:)这样学生就会明白为什么人们必须想出Java和c#

其他回答

编写小方法。程序员似乎喜欢编写冗长的方法,在这些方法中他们可以做多种不同的事情。

我认为应该在任何可以命名的地方创建方法。

“评论是谎言”

注释不能运行,而且很容易被忽略。最好是用清晰的、由单元测试说明的重构代码来表达意图。(当然是编写TDD的单元测试…)

我们不写注释,因为它们很冗长,而且模糊了代码中真正发生的事情。如果你觉得需要注释——找出代码中不清楚的地方,然后重构/编写更清晰的测试,直到不需要注释……

... 我从极限编程中学到的东西(当然,假设你已经建立了清理代码的团队规范……)

编码不是打字

编写代码需要时间。大多数时候,在编辑器窗口中,您只是查看代码,而不是实际输入。虽然不是经常,但你经常会删除你所写的内容。或者从一个地方搬到另一个地方。或重命名。

如果你长时间敲击键盘,那你一定做错了什么。

推论:每天写的代码行数并不是一个程序员生产力的线性衡量标准,一天写100行的程序员很可能比一天写20行的程序员更好,但一天写5000行的程序员肯定是坏程序员

单身人士并不邪恶

There is a place for singletons in the real world, and methods to get around them (i.e. monostate pattern) are simply singletons in disguise. For instance, a Logger is a perfect candidate for a singleton. Addtionally, so is a message pump. My current app uses distributed computing, and different objects need to be able to send appropriate messages. There should only be one message pump, and everyone should be able to access it. The alternative is passing an object to my message pump everywhere it might be needed and hoping that a new developer doesn't new one up without thinking and wonder why his messages are going nowhere. The uniqueness of the singleton is the most important part, not its availability. The singleton has its place in the world.

计算机科学学位不会——也不应该——教你成为一名程序员。

编程是一门手艺,计算机科学是一个研究领域。你可以是一个伟大的程序员,也可以是一个糟糕的计算机科学家,也可以是一个伟大的计算机科学家,也可以是一个糟糕的程序员。了解其中的区别是很重要的。

如果你想成为一名程序员,学习Java。如果你想成为一名计算机科学家,至少要学习三种几乎完全不同的语言。例如(汇编语言,c语言,lisp语言,ruby语言,smalltalk语言)