前几天,在构建一个使用 Angular 5/WebAPI 的 MVC 应用程序的 UI 替代方案时,我们遇到了一个问题。 我想,“这就是技术漂移。”
不久前有人提出了“技术漂移”这个术语。 我的团队从 Angular 的早期(AngularJS)、青少年时期(Angular 1-2)一直到现在的青年时期(Angular 4-6)一直在使用 Angular。 我们积累了大量的知识,但似乎总是跟不上变化。 本次讨论不是关于 Angular、MVC、Bootstrap 或其他工具。 而是关于我们在使用这些新工具时在生命周期中所经历的事情。 工具是可变的,并且会漂移。 因此,我们的应用程序更新受到了技术漂移的影响:看起来大约一个小时的工作最终花费了更长的时间。
“遗传漂移”指的是生物种群随着时间的推移遗传变异减少的现象。 这对于多样化的生态系统来说不是一件好事,但在我们希望可预测性的数字世界中,这种结果可能是积极的。 但是,请理解,技术多样性是您投资组合的一个健康方面。
这个过程正在 Angular 中发生,它的一些工具正在发生变化或消失。 这种行为不一定是坏事。 一些工具被弃用或删除是很自然的,因为创建或包含了更好的工具。 麻烦的结果是,由于这种技术漂移,我们正在积累技术债务。 问题是漂移是不可见的; 它在“水线”以下。
我们遇到的具体问题是使用模板驱动方法实现的 Angular 弹出模态框。 该组件正在监视一些文本框事件,最终查询数据库以获取一些东西的列表。 如果您不了解 Angular,问题在于一个实现当时有效并且已经有效了好几年。
为了使用防抖方法,该应用程序使用了 RxJS 类。 一个文本框驱动组件调用服务中的服务器 Web 方法以获取过滤后的结果集。 在很久以前,一位开发人员试图使用防抖并选择了该实现路径。 Angular 5 RxJS 在该特定对象上不再具有防抖功能。 工具漂移了。
当然,如果开发人员知道会发生这种情况,他或她就不会选择这种实现方式(我希望如此)。 对于 Angular 开发者来说,我们正在转换所有应用程序以使用响应式表单方法。 更多代码,更少的 HTML 指令——对于测试和理解应用程序中的流程来说,这是一个更好的选择。
我的建议是思考您在何处以及何时经历技术漂移以及原因。 这将帮助您了解工具中的风险以及升级/更新过程可能变得复杂的地方。 在评估您的技术堆栈和技术债务时,请考虑可能存在多少技术漂移。 如果您没有看到或经历任何漂移,那么您可能拥有一个成熟、稳定的工具集。 这并不意味着工具集不再变化,而是它已经成熟并处于可扩展的状态,因此您将因技术漂移而遭受较少的痛苦。
评论已关闭。