这绝对是主观的,但我想尽量避免它变成争论。我认为如果人们恰当地对待它,这将是一个有趣的问题。
这个问题的想法来自于我对“你最讨厌的语言的哪五件事?”问题的回答。我认为c#中的类在默认情况下应该是密封的——我不会把我的理由放在这个问题上,但我可能会写一个更完整的解释来回答这个问题。我对评论中的讨论热度感到惊讶(目前有25条评论)。
那么,你有什么有争议的观点?我宁愿避免那些基于相对较少的基础而导致相当宗教的事情(例如,大括号放置),但例如可能包括“单元测试实际上并没有多大帮助”或“公共字段确实是可以的”之类的事情。重要的是(至少对我来说)你的观点背后是有理由的。
请提出你的观点和理由——我鼓励人们投票给那些有充分论证和有趣的观点,不管你是否恰好同意这些观点。
单身人士并不邪恶
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.
库克的格言随意收集……
The hardest language to learn is your second.
The hardest OS to learn is your second one - especially if your first was an IBM mainframe.
Once you've learned several seemingly different languages,
you finally realize that all programming
languages are the same - just minor differences in syntax.
Although one can be quite productive and marketable without having learned any assembly,
no one will ever have a visceral understanding of computing without it.
Debuggers are the final refuge for programmers who don't really know
what they're doing in the first place.
No OS will ever be stable if it doesn't make use of hardware memory management.
Low level systems programming is much, much easier than applications programming.
The programmer who has a favorite language is just playing.
Write the User's Guide FIRST!
Policy and procedure are intended for those who lack the initiative to perform otherwise.
(The Contractor's Creed):
Tell'em what they need.
Give'em what they want.
Make sure the check clears.
If you don't find programming fun, get out of it or accept that although you may make a
living at it, you'll never be more than average.
Just as the old farts have to learn the .NET method names,
you'll have to learn the library calls. But there's nothing new there.
The life of a programmer is one of constantly adapting to different environments,
and the more tools you have hung on your belt, the more versatile and marketable you'll be.
You may piddle around a bit with little code chunks near the beginning to try out some ideas,
but, in general, one doesn't start coding in earnest until you KNOW how the whole program or
app is going to be layed out, and you KNOW that the whole thing is going to work EXACTLY as
advertised. For most projects with at least some degree of complexity,
I generally end up spending 60 to 70 percent of the time up front just percolating ideas.
Understand that programming has little to do with language and everything to do with algorithm.
All of those nifty geegaws with memorable acronyms that folks have come up with over the years
are just different ways of skinning the implementation cat. When you strip away all the
OOPiness, RADology, Development Methodology 37, and Best Practice 42, you still have to deal
with the basic building blocks of:
assignments
conditionals
iterations
control flow
I/O
一旦你能真正地把自己包围起来,你最终会到达你想要的那个点
看(从编程的角度来看)编写库存应用程序之间的差别很小
一个汽车零部件公司,一个图形实时TCP性能分析仪,一个数学模型
一个恒星核心,或者一个约会日历。
初级程序员处理小块代码。随着经验的积累,
他们处理越来越大的代码块。
随着经验的增加,他们开始处理小块代码。