发布时间:2020年11月18日 - 4分钟阅读
按计划可靠地删除废弃代码。
新的一年即将到来,在Flutter团队中,我们正在为2021年的干净开局做准备。
在准备过程中,我们要删除Flutter框架中的一些废弃API。
删除Flutter框架中的废弃并不是什么新鲜事。过去我自己也做过。快速搜索一下就会发现,删除弃用没有一个确定的时间表或计划,因为我们的弃用政策并没有规定何时删除它们。因为我们希望为用户提供一致和可靠的体验,我们决定为弃用创建一个标准的生命周期。
这篇文章讨论了我们当前的中断变更和废弃政策,它们是如何付诸实践的,以及它们是如何发展的,以便为我们的用户提供更好的体验。
在Flutter中的中断变更
图片:CHUTTERSNAP on Unsplash
在Flutter中废弃代码的过程始于我们的中断变更政策。弃用被认为是破坏性的变化,这意味着它们必须遵循公共设计文档指南,这需要一个讨论期。(这个提案的设计文件是《为废弃代码实现一个生命周期》)。除了提供设计文档外,我们还在Flutter贡献者Discord和flutter-announce和flutter-dev等热门群组上进行联系,所有这些都是在进行任何修改之前。这是我作为工程师最喜欢的部分之一。我可以听到您的意见。我们美好的社区对这个过程的参与度非常高,我们也因此变得更好。有好几次,我看到一个功能的设计在通过这些渠道公布后有了很大的改进,这都要感谢社区的反馈。
突破性变更的作者会迁移受突破性变更影响的客户代码。在上一次对我们的中断变更政策的更新中,我们邀请您将您的测试提交到我们的客户测试仓库。这些测试是我们发出的信号,表明某项变更已被破坏,我们致力于与测试作者合作,在进行变更之前迁移他们的代码。
我们也为我们的突破性变更提供迁移指南。这些指南旨在帮助用户在更新到Flutter的最新版本后迁移他们的代码。如果你看过我们的一个发布公告,我们也会在给定的版本中喊出中断,并为用户指出更新其应用程序的有用资源。
在过去的一项调查中,我们询问用户对中断更改的偏好。我们了解到,我们的用户认为突破性的更改能让代码更干净,对他们来说是有价值的,这就是为什么我们通常更喜欢突破性的更改而不是废弃。根据研究报告。
总的来说,78%的人说他们更喜欢能带来最干净的API的突破性变更;这也让API更容易学习和使用。
我们的中断变更政策就是基于这项研究。一如既往,每个规则都有例外。我最近废止了一些非常流行的方法,而采用了一个新的小部件。如果我们知道一个特定的变化是一个影响许多用户的重大突破,我们就会废止。废止允许有一个迁移的宽限期,同时仍然提供所有由中断变更策略产生的工具。
老化废弃
照片:Dilyara Garifullina on Unsplash。
迁移宽限期从稳定频道发布废弃版本时开始。宽限期结束的时间线是1个日历年或4个稳定版本,以较长者为准。为了得出一个我们认为舒适的时间表,我们看了我们的增长和采用情况,我们评估了一些开源的Flutter应用和包。
我们希望我们的用户能够依靠这个时间表,而不是想知道下一个版本是否会因为一个废弃消失而带来意外的升级障碍。我们也希望确保我们能够提前传达这些变化,并且我们承诺在开始删除废弃的版本之前宣布它们的生命周期结束。本着这种精神,我想和大家分享第一批即将结束寿命的废弃,现在Flutter 1.22已经上市了。
因为这是我们第一次将这一政策付诸实践,所以有相当多的弃用--有些是Flutter 1.0之前的!这些弃用也有几个是Flutter 1.22之前的。其中有几个弃用也早于我们的break change政策。我们将致力于为所有的迁移工具和指导。期待在我们的下一个稳定版本中看到这些弃用从Flutter框架中移除,当它们被移除时,在我们通常的渠道中会有公告。
当我们开始实施这些变化时,我们希望能听到您的意见。我们总是接受提交到我们的客户测试仓库,在那里我们与您一起工作,在做出突破之前迁移您的代码。要了解更多关于测试资源库和如何提交您的测试,请看一下Flutter测试README。当我们做出这些改变时,我们会使用 Flutter Contributor Discord、flutter-announce 和 flutter-dev 频道来通知你并请求你的反馈。所以,如果你还没有加入这些群组之一,请加入! 我们期待听到您的声音并一起工作。