----------- 2022-11-12 补充 -----------
最近在开发中尝试用了clean架构,感觉就是 麻烦。。。太多模板代码,很容易过度开发。
我认为了解这些理念是很重要的,但应该跟随你的项目、流程 进行调整、裁剪。
如果你们的流程是 服务端出接口,然后召开接口会议,实际上就是在将 Data层的Module 变成 Domain层的entity (争执难免),当然你这样就相当于 依赖了服务端,而服务端是IO,显然违背了 Clean架构的依赖规范。
如果你的项目不是测试驱动开发,根本就没 自动化测试case,那你去划分 Local、Remote、Test 的DataSource也很蛋疼,因为我就是从云端拿数据。 当然了这就看你的项目了。
小吐槽下。
----------- end 2022-11-12 补充 -----------
前言
对于Flutter在逐渐的熟悉,基本经历的几个阶段
- BLoC pattern 严格的话太不方便了,当然结构很清晰
- 需要写 Event、明确各种Status
- 试着使用Dart语言的 Stream 去做些刷新处理(很多入门书也是这么说的)
- Provider 挺方便好用的库,正在使用
- 很简单,写一个ViewModel,ViewModel改变时调用下 notifyListeners 方法就行了
- Clean Architecture 正在想实践Flutter侧的架构,当然也和阅读《架构整洁之道》有关
- 随着不断的开发,发现 ViewModel 爆炸了,Native时良好的Clean架构都没了。。。。。
- 就想着将逻辑从ViewModel中分出来
《架构整洁之道》绝对要推荐一波,他完美的满足需求,同时思想上大大超越的。
(怎样去评价组件的好坏、组件的发展周期、SOLID重新回顾、引出 clean架构、编程几十年也不会变的编程范式)
但看完后如何去实践,毕竟读过和真正懂得还是有很远的距离,在搜Media的时候看到了 如下的大神文章,从头开始教你实战 测试驱动开发、clean框架。
上图,clean架构的组件示意图。其组件依赖由外向内单向依赖。越靠近IO设备,越接近于外部。
《架构整洁之道》
抛砖引玉吧,下面是我感触比较深的地方
- 设计程序时,最好没有 UI,即便只是命令行 也应该可以跑起来
- MVC、MVVM、MVP,我们太看重View了,让View见鬼去吧,他们没多大价值。
- 我最钦佩的一段节选:
有很大的感触,假设你写的 阅读软件,你的源代码看起来像 阅读软件吗?
听起来似乎很白痴的问题,但有多少的软件是 ***Activity, ***Page, ***Controller。 比如阅读的纠错需求,你是 CorrectPage、CorrectControlelr,CorrectModel。你有建立一套业务层吗? CorrectStrategy、CorrectHighlight。
简单说你的APP,有隔离出 业务层(domain layer)吗?业务层不应该和Flutter层等代码关联。
翻译 大神文章
最后找到了, Flutter上的 TDD (Test-Drive Development)、Clean架构 相对好的,有完整代码记录的。
大神级文章 以下为翻译,同时我也加入自己的理解,尽量 信达雅吧。
TDD开发 (测试驱动开发)
涉及到库的依赖,看最后
分三个阶段
1. Write Error Test 编写错误测试
- 第一步是 根据PRD(需求