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

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

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

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


当前回答

PHP文件中过多的HTML:有时是必要的

PHP文件中Javascript过多:触发猛禽攻击

虽然我很难弄清楚在echo和?>< ?php 'ing html之间的所有切换(毕竟,php只是html的处理器),但添加的一行又一行javascript使它完全无法维护。

人们必须明白这一点:它们是两种独立的编程语言。选择一种作为你的主要语言。然后继续寻找一种快速、干净、易于维护的方法,使你的主要语言包括第二语言。

你之所以总是在PHP、Javascript和HTML之间切换,是因为你对这三种语言都不在行。

好吧,也许这并不是很有争议。我的印象是,这是一个普遍的沮丧发泄话题:)

其他回答

我认为使用try/catch异常处理比使用简单的返回代码和相关的公共消息传递结构来传递有用的错误消息更糟糕。

用try/catch块乱扔代码不是解决方案。

只是将异常传递到堆栈上,希望上面的内容会做正确的事情或 生成信息错误并不是解决方案。

认为您有机会系统地验证适当的异常处理程序可以解决透明对象或opague对象中可能出现的任何错误,这是不现实的。(还要考虑到后期绑定/外部库以及随着系统的发展,调用堆栈中不相关函数之间不必要的依赖关系)

返回代码的使用很简单,可以很容易地系统地验证覆盖范围,如果处理得当,就会迫使开发人员生成有用的错误消息,而不是太常见的堆栈转储和模糊的I/O异常,即使对最聪明的最终用户来说,这些异常也“异常”毫无意义。

--

我最后的反对意见是使用垃圾收集语言。不要误会我的意思。在某些情况下,我喜欢它们,但在服务器/MC系统中,它们在我看来没有位置。

GC并不是绝对正确的——即使是设计得非常好的GC算法也可能基于依赖关系图中不明显的循环引用而在对象上停留太长时间,甚至永远停留。

遵循一些简单模式并使用内存计算工具的非GC系统不会有这个问题,但在设计和测试方面需要比GC环境做更多的工作。这里的权衡是,在非GC测试期间,内存泄漏非常容易发现,而找到与GC相关的问题条件则要困难得多。

内存是便宜的,但当你泄露昂贵的对象,如事务句柄、同步对象、套接字连接……在我的环境中,如果不对软件描述进行重大的基本更改,那么您可以坐下来让语言为您操心,这种想法是不可想象的。

不要改变未坏的东西。

如果你是一个开发人员,你应该会写代码

去年我做了很多面试,在我的面试部分,我应该测试人们的思维方式,以及他们如何在白板上实现简单到中等的算法。我一开始的问题是:

假设可以使用函数4 *(1 - 1/3 + 1/5 - 1/7 +…)来估计圆周率,使用更多的项来获得更高的精度,编写一个计算圆周率的函数,其精度为小数点后5位。

这是一个应该让你思考的问题,但对于一个经验丰富的开发人员来说不应该是遥不可及的(它可以用大约10行c#来回答)。然而,我们的许多候选人(应该是中介机构预先筛选的)甚至无法开始回答这个问题,甚至无法解释他们将如何回答这个问题。所以过了一段时间,我开始问一些更简单的问题,比如:

给定圆的面积是π乘以半径的平方,写一个函数来计算圆的面积。

令人惊讶的是,超过一半的候选人不能用任何语言编写这个函数(我可以阅读大多数流行的语言,所以我让他们使用他们选择的任何语言,包括伪代码)。我们有“c#开发人员”,他们不能用c#编写这个函数。

我对此感到很惊讶。我一直认为开发人员应该会写代码。现在看来,这似乎是一个有争议的观点。当然是在面试中!


编辑:

在评论中有很多关于第一个问题是好是坏的讨论,以及你是否应该在面试中问这么复杂的问题。我不打算在这里深入研究这个问题(这是一个全新的问题),除了说你在很大程度上错过了文章的重点。

是的,我说过人们在这个问题上无法取得任何进展,但第二个问题很琐碎,许多人在这个问题上也无法取得任何进展!任何自称为开发人员的人都应该能够不假思索地在几秒钟内写出第二个问题的答案。很多人做不到。

else是有害的。

偶尔写一些垃圾代码是可以的

有时,一段快速而肮脏的垃圾代码就是完成特定任务所需要的全部。模式、orm、SRP等等……抛出一个控制台或Web应用程序,写一些内联sql(感觉不错),然后抛出需求。