【公告】lexpro 库 sound null safety 版本发布

这个五一节最大的动作就是把 lexpro 从 sdk 2.10 提升到 2.12+,这是 flutter2+ 支持的版本号,以后库特性将跟随语言特性和框架特性一起更新。

以前的图标(可点):

sound null safety 版本图标(可点):

但是目前使用起来还是需要将 lexpro 库引用在 pubspec.yaml 中改成 lexpro_nullsafety ,稳定之后会合并在 lexpro3 版本中。之所以保持双版本,是因为渐进重构的需求,将老版本项目升级到新版本的首要动作就是将依赖库统一升级到 null_safety 版本,但是自己写的库项目自己项目里有引用,先行升级到 null_safety 版本而本体未升级的意义也不大。

所以 null_safety 版本是一个中间产物,等本体项目重构完成会统一改回到 lexpro ^3.0.0

关于重构

关于重构,这里有一篇 渐进重构的指导性文章,它比较具有操作性。

关于重构,你必须先阅读理解官方都 更新了什么,值得冒这么大风险来 breaking change

关于重构,也想多说几句,它不像官方提供的工具一样简单将出问题的地方后面加一个感叹号 ! 就可以避免编译错误,sound null safety 特性是要求程序员在设置函数形参和成员变量的时候就想好它是可空的还是非空的,这对于习惯于在使用时再进行空判断的思维方式是大不同的,空判断提前在编译阶段做了,就会省去运行时出错的可能性,但是加重编码阶段的设计,你甚至要根据使用情况反复修改它的类型,这在使用 iterable 和相互内嵌的情况下尤为关键。

再者,sound null safety 特性引发我们的思考:我们的项目结构是否具有抵抗这种breaking change的能力,当你渐进重构的时候要从 utils, base 这种依赖极少的包开始,逐渐向依赖度高和复杂性高的功能类延伸,这时候你就会发现组合由于继承的好处。

粒度越细越容易拆分和测试。

重构的时候做项目拆分以及添加单元测试都是必要的投入,你会发现之前未关注的问题都会是在软件工程领域欠下的债务。

关于 lexpro 库

lexpro 库是一个从 01 的词法解析库扩展,通过在状态机中内嵌生命周期 hook 实现直接从词法解析生成 抽象语法树-AST 简化开发流程和降低依赖。

这里有一处代码演示视频显示了结合 Flutter 框架制作编辑器的能力:

视频演示

后续可能会将编辑器的代码开源出来供大家学习,有意愿的可以留言给我。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享