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

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

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

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


当前回答

复制/粘贴不是反模式,事实上它有助于避免产生更多的错误

我的经验法则——只输入不能复制/粘贴的东西。如果创建类似的方法,类或文件-复制现有的并更改所需的内容。(我不是在谈论复制应该放在单个方法中的代码)。

我通常从不输入变量名——要么复制粘贴,要么使用IDE自动补全。如果需要一些DAO方法-复制类似的方法并更改所需的内容(即使将更改90%)。对某些人来说,这可能看起来是极度的懒惰或缺乏知识,但我几乎从来没有处理过由拼写错误引起的问题,而且它们通常很难捕捉(如果没有在编译级别检测到)。

每当我偏离我的复制粘贴规则,开始输入东西时,我总是拼写错误(这只是一个统计数据,没有人能立即写出完美的文本),然后花更多的时间试图找出哪里。

其他回答

如果没有远程调试器,就无法编写web应用程序

Web应用程序通常将客户端和服务器端多种语言之间的交互联系在一起,需要用户进行交互,并且通常包括第三方代码,这些代码可以是简单的API实现,也可以是复杂的框架。

我已经记不清有多少次,当我用一个不错的远程调试器进入并跟踪一个复杂的web应用程序中实际发生的事情时,另一个开发人员坐在我身边,看到他们惊讶地发现有这样的工具存在。通常情况下,即使在看到这些工具的实际运行后,他们仍然不愿意费心安装和设置这些工具。

你只是不能用打印语句调试一个重要的web应用程序。如果应用程序中的所有代码都不正确,则乘以10。

如果您的调试器可以逐步检查所有正在使用的语言,并显示正在发生的http事务,那就更好了。

没有Firebug就无法开发web应用程序

同理,一旦你用过Firebug(或非常接近Firebug的东西),你就会对那些试图开发web应用程序的人既同情又恐惧。特别是Firebug显示计算样式,如果你还记得不使用它,花了几个小时随机更改各种CSS位,并添加“!重要的”在太多的地方搞笑你永远不会回去。

JavaScript是一种“混乱”的语言,但上帝保佑我,我喜欢它。

缺陷和增强请求是相同的

Unless you are developing software on a fixed-price contract, there should be no difference when prioritizing your backlog between "bugs" and "enhancements" and "new feature" requests. OK - maybe that's not controversial, but I have worked on enterprise IT projects where the edict was that "all open bugs must be fixed in the next release", even if that left no developer time for the most desirable new features. So, a problem which was encountered by 1% of the users, 1% of the time took precedence over a new feature would might be immediately useful to 90% of the users. I like to take my entire project backlog, put estimates around each item and take it to the user community for prioritization - with items not classified as "defect", "enhancement", etc.

如果语言已经公开了实际类型,就不要为基本类型使用关键字。在c#中,这将指bool (Boolean), int (Int32), float (Single), long (Int64)。'int', 'bool'等不是语言的实际部分,而只是实际类型的'快捷方式'或'别名'。不要使用不存在的东西!在我看来,Int16, Int32, Int64,布尔值等比'short', 'long', 'int'更有意义。

当许多新技术出现时,我对它们的了解只够决定我现在是否需要它们。

如果没有,我就把它们放在一边,直到“早期采用者”把粗糙的边缘去掉,然后每隔几个月/几年再检查一次。