在数据管道中,staging指的是将数据从源系统移动到目标系统之前的中间步骤。在staging过程中,数据会经过一系列的转换和处理,以确保数据的质量和准确性。staging可以包括数据清洗、格式转换、数据合并等操作,以便最终将数据加载到目标系统中。
这里面既有函数式编程的思路,也有系统数据流分析的影子。而今天在uni-composing-cli这个项目的代码重构中,再次体验到了这个原则。
实际上,在我之前设计的bisheng-cli的项目中也成功使用了这个原则,只是现在对这个原则的体验更加强烈。
简单来说,我将下面的3个函数变成了3个成员变量。
这个变化直接导致代码的调用变得简单很多。
从staging的角度来看,我们要确保每一个staging中,数据的有效性。即如果这个数据在转换中失败,那么它就不能够被传递到管道的下一个处理节点上。
以这一段代码为例:
在处理page_staging_item这个数据时,仍然在检查get_mixins_staging_path()的返回值是否有效。实际上,当程序运行到这里时,从逻辑上将,page_staging_item里面的属性都应该是有效的。所以写这么一长串错误处理的代码不仅没意义,而且还降低了在处理get_mixins_staging_path这个函数的错误处理的逻辑内聚性。而相关的错误处理代码都被集中在了数据转换环节。(说到转换,Rust的std上本来就提供了TryFrom,并且编译器也会特殊照顾TryFrom)
抽象来说,就是这个样子吧
好吧,我承认写得有些仓促,主要是抛砖引玉。
以上代码来至于我的开源项目:https://gitee.com/hanshu_alan/uni-platform
这篇文章收录我的Rust-实战专栏。请关注我,不要错过更新哟。