我正在考虑尽量减少对尚未编写的应用程序的未来影响。我试图避免任何 3rd 方产品,甚至避免特定于操作系统的调用。任何人都可以建议将来验证应用程序的其他方法。这个想法是不必在 10 或 20 年内重写主要部分,并且只需要进行维护(错误修复)。
6 回答
如果您希望您的程序在这种时间段内(在现代操作系统上)继续运行,您可能最终不得不只用纯 ANSI C(或 C++)编写它。多年来,其他任何事情都可能需要进行某种调整——没有人真正知道未来 10 到 20 年会发生什么。
也就是说,这里有一些技巧可以最大限度地减少这些问题:
挖掘一些 10 年和 20 年前仍然在今天的机器上运行的程序,看看它们为什么仍然运行以及为什么它们有价值。我看到一些基于控制台的计算密集型应用程序仍在偶尔使用,主要是用 C 和 FORTRAN 编写的,由其他应用程序调用。如果你的应用程序有很多 GUI,你确定它在几十年后仍然有任何价值吗?也许考虑将用户界面与核心功能分开,这样 UI 可以在未来随着 UI 范式的变化和发展而被替换。如果您以非常模块化的方式编写系统,则可以保留仍然提供价值的模块,而可以替换那些明显过时的模块。
考虑到 64 位编写。我们现在发现我们的许多第三方依赖项不支持 64 位,因此我们遇到了问题。
构建一个在 10 年内仍可运行且几乎无需维护的应用程序的最佳方法是查看 10 年前构建并仍在运行的系统。
根据我的经验,大多数不需要重大升级的系统都是通过在与 10 年前部署的相同或相似硬件上运行并使用相同的界面来实现的。
由于摩尔定律或可用性改进,维护者选择放弃性能改进,转而支持多年来几乎没有维护。
自动化测试也可以提供帮助。并不是说您的应用程序会被“证明”,但我会知道当事情发生变化时必须修复什么。
我开发的许多应用程序都按周期运行(例如:每年)。我为确保他们继续工作所做的最重要的事情不是硬编码日期或日期范围。例子:
year(now())
对于这一年DateSubmitted BETWEEN year(now()) AND DATEADD(year,1,year(now()))
对于一个范围
当然,这些只是例子。