我们的每个项目都有一些共同点,
这是浪费时间和精力。
共同部分很简单时很好,但并非总是如此。
有没有人想过这样的问题?
目标是:
当我们做编码时,我们只做新的,比如说,与以前做过的任何部分都不相似的部分。
如果有好的解决方案,对很多程序员来说是一个很大的解脱!
我们的每个项目都有一些共同点,
这是浪费时间和精力。
共同部分很简单时很好,但并非总是如此。
有没有人想过这样的问题?
目标是:
当我们做编码时,我们只做新的,比如说,与以前做过的任何部分都不相似的部分。
如果有好的解决方案,对很多程序员来说是一个很大的解脱!
这是任何库、编程语言或设计模式的重点:抽象出已解决的问题,因此不必再次解决它们。
当然,总会有新的、更复杂的问题需要解决。人们不同意解决问题的正确方法。所以还有很多事情要做。
是的,我每天都在思考和思考——解决方案并不简单,但它是可以实现的:始终尝试将代码中的共同点分解为可重用的工件。这就是解决方案,但这不是偶然发生的——这是每天的努力。
有很多解决方案,从 goto 到函数、到类、到模块或组件,再到库。所有这些都允许您重用代码。
即使是最简单的 hello world 应用程序也会大量使用它。您不必自己编写所有的输出功能,您可以使用语言的标准库和将文本打印到屏幕的操作系统例程。
例如,即使像 C 这样的原始语言也提供了将printf
文本打印到屏幕上的功能,这样您就不必自己编写了。
代码重用当然是最理想的,但有许多实际障碍会阻碍。例如(这里主要考虑库重用):
您可能不了解现有功能,或者不知道它是否满足您的需求。有时,找出可重用功能所需的时间比自己实现它所需的时间还要长。
现有代码可能与您需要的略有不同。有时,在您尝试重用代码之前,这些差异可能并不明显。
现有代码可能存在只有在您的应用程序中使用时才会变得明显的错误(#2 的特殊情况)。调试其他人的代码通常是一个真正的挑战,尤其是在您没有可用的可修改源代码的情况下。
现有代码可能带有不适合整个项目的许可限制。
现有代码可能对其他库和代码有很多依赖,这会使您的可执行文件膨胀,使其更加脆弱,或者限制您将其部署到某些环境的能力。
现有代码可能与您也希望与应用程序链接的其他库发生冲突。