这绝对是主观的,但我想尽量避免它变成争论。我认为如果人们恰当地对待它,这将是一个有趣的问题。
这个问题的想法来自于我对“你最讨厌的语言的哪五件事?”问题的回答。我认为c#中的类在默认情况下应该是密封的——我不会把我的理由放在这个问题上,但我可能会写一个更完整的解释来回答这个问题。我对评论中的讨论热度感到惊讶(目前有25条评论)。
那么,你有什么有争议的观点?我宁愿避免那些基于相对较少的基础而导致相当宗教的事情(例如,大括号放置),但例如可能包括“单元测试实际上并没有多大帮助”或“公共字段确实是可以的”之类的事情。重要的是(至少对我来说)你的观点背后是有理由的。
请提出你的观点和理由——我鼓励人们投票给那些有充分论证和有趣的观点,不管你是否恰好同意这些观点。
如果它不是原生的,它就不是真正的编程
根据定义,程序是由计算机运行的实体。它直接与CPU和操作系统对话。不直接与CPU和操作系统对话的代码,而是由其他直接与CPU和操作系统对话的程序运行的代码,不是程序;这是一个脚本。
在Java出现之前,这只是简单的常识,完全没有争议。突然出现了一种脚本语言,它具有足够大的功能集,可以完成以前专属于程序的任务。作为回应,微软开发了。net框架和一些在其上运行的脚本语言,并设法通过在他们的开发工具中逐渐减少对真正编程的支持,以支持。net脚本来进一步搅浑水。
尽管它可以完成许多您以前必须编写程序才能完成的事情,但任何种类的托管代码仍然是脚本,而不是编程,用它编写的“程序”确实并且总是共享脚本的性能特征:它们运行得更慢,并且比真正的(本机)程序完成相同任务所需的内存要多得多。
人们称其为编程,这是对每个人的伤害,因为他们简化了定义。这会导致整体质量下降。如果你试图让编程变得如此简单,以至于任何白痴都能做到,那么你最终会得到一大堆自以为能编程的白痴。
生成文档良好的代码比生成文档不良的代码花费的时间更少
When I say well-documented I mean with comments that communicate your intention clearly at every step. Yes, typing comments takes some time. And yes, your coworkers should all be smart enough to figure out what you intended just by reading your descriptive function and variable names and spelunking their way through all your executable statements. But it takes more of their time to do it than if you had just explained your intentions, and clear documentation is especially helpful when the logic of the code turns out to be wrong. Not that your code would ever be wrong...
I firmly believe that if you time it from when you start a project to when you ship a defect-free product, writing well-documented code takes less time. For one thing, having to explain clearly what you're doing forces you to think it through clearly, and if you can't write a clear, concise explanation of what your code is accomplishing then it's probably not designed well. And for another purely selfish reason, well-documented and well-structured code is far easier to dump onto someone else to maintain - thus freeing the original author to go create the next big thing. I rarely if ever have to stop what I'm doing to explain how my code was meant to work because it's blatantly obvious to anyone who can read English (even if they can't read C/C++/C# etc.). And one more reason is, frankly, my memory just isn't that good! I can't recall what I had for breakfast yesterday, much less what I was thinking when I wrote code a month or a year ago. Perhaps your memory is far better than mine, but because I document my intentions I can quickly pick up wherever I left off and make changes without having to first figure out what I was thinking when I wrote it.
这就是为什么我能很好地编写文档——不是因为我觉得编写适合展示的漂亮代码是一种崇高的使命,也不是因为我是一个纯粹主义者,而只是因为端到端让我在更短的时间内发布高质量的软件。