首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >开发寿命较长的web应用程序(20+年)

开发寿命较长的web应用程序(20+年)
EN

Software Engineering用户
提问于 2016-10-13 07:24:14
回答 7查看 19.8K关注 0票数 160

我目前正在开发一个用于政府土地规划的网络应用程序。应用程序主要在浏览器中运行,使用ajax加载和保存数据。

我先做初步发展,然后毕业(这是一份学生工作)。在此之后,团队的其他成员将根据需要添加偶尔的特性。他们知道如何编码,但他们大多是土地规划专家。

考虑到Javascript技术变化的速度,我如何编写20年后仍能工作的代码?具体来说,我应该使用(或避免)哪些库、技术和设计思想来验证我的代码?

EN

回答 7

Software Engineering用户

回答已采纳

发布于 2016-10-13 09:50:22

规划这样一个生命周期的软件是很困难的,因为我们不知道未来会是什么。背景: Java于21年前于1995年出版。XmlHttpRequest最初是作为Internet 5的专有扩展出现的,它于1999年出版,17年前出版。它花了大约5年的时间,才在所有主要浏览器上都可以使用。你努力向前看的20年正是富web应用程序存在的时间。

从那以后,有些事情肯定没有变化。已经进行了很强的标准化工作,而且大多数浏览器都很好地符合所涉及的各种标准。一个在15年前跨浏览器工作的网站仍将同样工作,前提是它是针对所有浏览器的公共子集而工作的,而不是因为它为每个浏览器都使用了变通方法。

其他东西来来去去--最突出的是闪光灯。Flash有各种各样的问题导致了它的灭亡。最重要的是,它由一家公司控制。而不是在Flash平台内部的竞争,闪存和HTML5之间的竞争-和HTML5赢了。

从这段历史中,我们可以收集到几条线索:

  • 保持简单:现在就做有效的事情,而不必使用任何解决办法。由于向后兼容的原因,这种行为可能会在未来很长一段时间内仍然存在。
  • 避免对专有技术的依赖,更倾向于开放标准。

当今的JavaScript世界是相对不稳定的,有大量的库和框架。然而,在20年内,它们几乎都不会起作用--我确信到那时仍将使用的唯一“框架”是Vanilla JS。

如果您想使用库或工具,因为它确实使开发更加容易,那么首先要确保它是建立在当今支持良好的标准之上的。然后,您必须下载库或工具,并将其包含在源代码中。您的代码存储库应该包含系统可运行所需的所有内容。任何外在的东西都是一种依赖,将来可能会崩溃。一个有趣的测试方法是把你的代码复制到一个拇指驱动器上,转到一台新的计算机上,使用不同的操作系统,断开它与互联网的连接,看看你是否能让你的前端工作。只要您的项目由普通的HTML+CSS+JavaScript和一些库组成,您就有可能通过。

票数 136
EN

Software Engineering用户

发布于 2016-10-13 12:23:20

阿蒙先前的回答很棒,但是还有两点没有提到:

  • 这不仅仅是关于浏览器;设备也很重要。amon提到了这样一个事实:“15年前跨浏览器运行的网站仍然可以正常工作”,这是事实。然而,看看不是十五年前创建的网站,而是十年前创建的网站,在大多数浏览器中,这些网站对大多数用户都是有效的。今天,很大一部分用户根本无法使用这些网站,这不是因为浏览器发生了变化,而是因为设备改变了。这些网站在移动设备的小屏幕上看起来会很糟糕,如果开发者决定依赖JavaScript click事件,而不知道tap事件也很重要的话,最终就根本无法工作。
  • 你把注意力集中在一个错误的话题上。技术变革是一回事,但更重要的是需求的变化。该产品可能需要缩放,或者可能需要有其他功能,或者可能需要更改其当前功能。不管浏览器、设备、W3C或.管他呢。如果您以一种可以重构的方式编写代码,则该产品将随着技术的发展而发展。如果您以一种无人能够理解和维护的方式编写代码,那么技术并不重要:任何环境变化都会使您的应用程序崩溃,比如迁移到不同的操作系统,甚至是自然数据的增长。举个例子,我在软件开发领域工作了十年。在这几十个项目中,我决定改变的项目只有两个,更确切地说,是因为PHP在过去十年中发展了很多。这甚至不是客户的决定:他不在乎网站是否使用PHP的名称空间或闭包。然而,与新需求和可伸缩性相关的变化有很多!
票数 38
EN

Software Engineering用户

发布于 2016-10-13 15:24:04

你不打算维持20年。朴素而简单。相反,你把你的目标转移到分隔化。

你的应用数据库不可知吗?如果你现在必须转换数据库,你能不能。你的逻辑语言不可知论。如果你现在必须用一种全新的语言重写这个应用程序,你会吗?你是否遵循好的设计准则,如SRP和DRY?

我的项目寿命超过20年,我可以告诉你,事情变了。就像弹出式。20年前你可以依靠弹出,今天你不能.XSS不是20年前的事情,现在你必须考虑CORS。

因此,您要做的是确保您的逻辑很好地分开,并且避免使用任何将您锁在特定供应商的技术。

这有时是非常棘手的。例如,.NET很擅长于公开逻辑和方法,因为它的MSSQL数据库适配器在其他适配器中没有等效项。MSSQL现在看起来可能是个不错的计划,但它会持续20年吗?谁知道呢。如何绕过这个示例,使数据层与应用程序的其他部分完全分离。然后,最坏的情况是,您只需重写整个数据层,应用程序的其余部分就不会受到影响。

换句话说,把它想象成一辆汽车。你的车撑不了20年了。但是,有了新的轮胎、新的引擎、新的变速器、新的窗户、新的电子产品等,同一辆车可以在路上走很长时间。

票数 32
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/333487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档