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

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

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

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


当前回答

管理者无所不知

根据我的经验,经理通常不是通过了解代码来达到这个目的的。不管你怎么跟他们说,它太长了,不对或者太贵了。

还有一个是继第一个之后的:

没有时间把事情做对,但总有时间再做一遍

一位很好的工程师朋友曾经说过,他很生气地描述了这样一种情况:管理层把他的估计减半了,从他那里得到了一个半途而废的版本,然后给了他两倍的时间来返工,因为它失败了。在商业软件世界中,这是一件相当常见的事情。

今天在尝试配置一个只有web接口的路由器时,我想到了一个问题:

网页界面是为傻瓜准备的

上一个固件版本的CLI非常好。这个版本有一个web界面,试图从无知的IT机器人那里隐藏所有网络的复杂性,甚至不能得到正确的vlan。

其他回答

你不能通过计算代码行数来衡量生产力。

每个人都知道这一点,但出于某种原因,这种做法仍然存在!

人们抱怨将“goto”从语言中移除。我碰巧认为任何类型的条件跳转都被高估了,而“if”“while”“switch”和通用的“for”循环也被高估了,应该非常谨慎地使用。

每次进行比较和条件跳转时,都会增加一点点复杂性,一旦调用堆栈达到几百个条目,这种复杂性就会迅速增加。

我的第一选择是避免条件,但如果不实用,我的下一个选择是在构造函数或工厂方法中保留条件复杂性。

显然,这对于许多项目和算法(如控制流循环)来说并不实际,但这是我喜欢推动的事情。

瑞克

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

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

没有闭包我也能活。

看起来现在每个人和他们的母亲都想在一种语言中出现闭包,因为它是自切片面包以来最伟大的发明。我认为这只是另一种炒作。

软件开发是计算机科学的一个非常小的子集。

人们有时似乎认为这两者是同义词,但实际上,计算机科学的许多方面是普通开发人员很少(如果有的话)接触到的。根据一个人的职业目标,我认为有很多计算机专业的毕业生如果接受某种软件工程教育可能会更好。

我非常重视教育,拥有计算机科学学士学位,并在业余时间攻读计算机科学硕士学位,但我认为许多获得这些学位的人将学位视为达到目的的手段,受益甚微。我认识很多人,他们上过和我一样的系统软件课程,写过和我一样的汇编程序,但直到今天他们都没有看到他们所做的任何价值。