Good Programmers Write Bug-Free Code, Don't They?

The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:

好的程序员会产生较少的错误,而不好的程序员则造成更多的错误。听起来很合理,不是吗?然而,对这种思维方式有很多批评。比如说:错误是不可避免的,与其期望我们产生更少的错误,不如让我们专注于正确的设计,让测试人员发现并报告错误,然后我们再修复它们。或者这样说:害怕犯错误会使我写得更慢,实验更少,这会导致软件质量下降。在这里可以阅读更多相关内容(链接:http://programmers.stackexchange.com/questions/41248)和(链接:http://www.joelonsoftware.com/articles/fog0000000067.html)。但请允许我从不同的角度来看待这个问题,并坚称,是的,好的程序员确实会产生更少的错误。

我认为这一切都与我们如何定义“质量”和什么是“错误”有关。

如果我们看一下传统而非常“直观”的错误定义,那么错误就是导致我们的软件产生不正确或意外结果的东西。然而,如果我们更多地考虑软件实际上是如何被使用以及由谁使用,我们会发现还有许多其他类型的错误,包括可扩展性、可靠性甚至可维护性的错误。

如果我们将所有这些“-ilities”列成一个列表,并根据其严重性和对业务的重要性对它们进行优先排序,我们会发现与功能相关的错误与首要问题相去甚远。实际上,我会将可维护性放在首位。

我的观点是,不同的错误并不都是相等的。如果我正在编写由一段Java代码生成的PDF报告,而我的报告缺少页脚,那就是一种错误,修复它将花费公司X美元。另一方面,如果我的PDF生成代码非常难以修改,以至于为了将其格式从A4更改为US Letter,我们必须从头开始重写,那就是完全不同类型的错误。不用说,它的修复将会更加昂贵。

所以是的,犯错误是不可避免的。我们不应该害怕错误,而应该准备好犯错误。然而,好的程序员会犯下更便宜的错误,以避免犯更昂贵的错误。

好的程序员明白,在我们通常有限的时间内实现软件时,我们必须在功能性上做出取舍,以获得可维护性。理想情况下,你希望实现两者,但实际上几乎不可能。

我们都在压力之下工作,并且有时间和资金的限制。在这些限制下,好的程序员更喜欢在功能上产生错误和不完整,同时保持设计的清晰和易于维护。当然也有例外情况,即业务优先考虑功能性,但这种情况很少发生(如果业务明智的话)。

总结一下,我认为好的程序员产生的功能性错误比不好的程序员多,尽管不好的程序员产生的错误比好的程序员产生的错误更昂贵。

Translated by ChatGPT gpt-3.5-turbo/42 on 2023-11-18 at 05:03

sixnines availability badge   GitHub stars