我正在学习关于可以帮助我编写更小但更复杂的代码的算法。 我可以设计一个算法来执行150行的if-else语句,只需要20行。 问题是许多这些算法可能很复杂,并且需要很多数学知识才能理解它们。 而且我是唯一一个理解这些算法的人。
为了保持代码的可维护性,是按照其他人的方式编写代码更好,还是使用算法更好呢?
为了保持代码的可维护性,是按照其他人的方式编写代码更好,还是使用算法更好呢?
简单通常是更好的。请记住,其他人可能会在未来维护它。
编写代码时应考虑到普通程序员的维护和理解难度,使其易于维护和理解。
不必要的复杂性总是不好的。是的,编写一个能够完成200行函数工作的精简代码可能会很有趣。但请记住,您需要维护代码。短而复杂的代码维护起来非常困难。
Python之禅很好地解决了这个问题:
...
简单胜于复杂。
复杂胜于凌乱。
...
如果实现难以解释,则是一个糟糕的想法。
...
换句话说(正如其他人所说),在规定的约束条件(时间、内存等)下,最简单的算法能够完成任务,就是最好的。显然,一个不能完成任务的更简单的算法是不够好的。如果你的代码因为使用了复杂的思想而变得更短,那么它就很复杂。如果没有人能够理解你的代码,那它就是复杂的;如果你很难向他们解释它(即使他们有数学博士学位),那么它是个糟糕的想法。
...
特例并不足以打破规则。
虽然实用性胜过纯粹性。
...
通常会有很多特殊情况的代码在其生命周期中潜入最初的“纯”代码中。你应该抵制这种复杂性的建立,但在必要时接受它。
让代码更简单的另一个风险是你会被归为普通程序员的一堆中。你要考虑的是可读性/不可读性的问题。如果你在一周后回来,仍然可以轻松地阅读代码,那么我认为它已经足够简单了。
尝试在你写完几周后请其他人审核你的“更复杂”的版本。判断复杂度是基于你自己阅读和向他人解释时的难度以及他们对代码的反应。
我认为问题是 - 复杂的代码是否更好?它是否更快,更可靠?目标是编写最佳程序,如果复杂的代码是最佳解决方案,那么您只需要编写更好的注释,以便您的继任者可以在未来管理代码。原则上,在任何情况下,代码应尽可能简单。