这是我们没有的问题的糟糕解决方案

最糟糕的代码是什么?

不要说JavaScript。 它会在你身上成长。

不,也不是Perl。

好的,所以Perl非常令人讨厌。

这是我们没有的问题的糟糕解决方案

最糟糕的代码…

这是我们不需要的代码……紧接着是几乎有效的代码,然后是无效的代码。

几乎可以正常工作的代码非常令人讨厌,因为您一开始不会意识到它不起作用。

几乎可以运行的代码,我们不需要…完美的风暴。

志趣相投的最佳意图

我们都希望尽力而为。 开发的创造性过程充满了假设,如果不是,那就太好了。

有时,开发人员想加倍努力。 如果您可以廉价地做到这一点,并且有即将到来的要求,那就太好了。 辉煌。

确实,有时候解决所有用例的一般情况实际上比解决我们面前的子集要容易得多。

但是,对于在解决方案上所花费的时间和风险,我们必须保持批判性态度,而解决方案仅需几个步骤即可完成。 这有时是因为通用的通用解决方案可能要复杂得多,这意味着有些棘手的情况,并且……等待它……工作量不大。

在这种情况下,试图以一种价格提供两种解决方案的尝试无法为任何一个问题提供完全有效的解决方案。

快速范例

假设我们接收到的格式为"ABC"输入文本,其中每个字符之间都留有空格,而输出的格式为"ABC"文本则没有空格。 有了间距,字符串"The cat"将变为"T hecat"

我们可以轻松地创建一种在这些格式之间进行转换的算法。 没什么大不了的。 我们还可以使用空格加法器或空格消除器,这取决于我们希望处理的格式。

假设有人试图让转换算法检测到隔行扫描是否间隔开,并在必要时自动将其转换为输出格式。 那可能很好。 我们不必有两个入口点,调用者也不需要知道哪种格式。 除了……字符串"A "是什么-格式是什么?

通过尝试使用通用方法处理所有可能的输入,我们可以使无法处理的边缘情况成为可能。

摘要

上面是一些尝试的复杂反向射击的极端示例。 通常的情况是,解决我们所没有的问题通常是浪费的,甚至更多的是,如果最终的解决方案无法像解决我们所遇到的问题那样简单地工作,那么这样做会更加浪费。

翻译自: https://www.javacodegeeks.com/2019/12/bad-solution-problem-dont-have.html