心目中思考问题时,最理想的状态是具体的模块都是一般,每个对象实体都是抽象。C++有时会为我提供这样的一种思考线路:分析某块功能->抽象这个功能->延伸这个功能->实现某些功能->拼接这些功能。顺着这个路线,呈现出来的状况常常是这样的:单个功能大而全->多个功能少而散。C++在前半部分(抽象)能够让人处于比较理想的状态。而且编写某个类时能脱离了c这种对流程的干扰,只关注当前功能的实现。
流是我觉得在C++中最抽象的一部分,因为程序本质是控制数据流向的一种方法。流甚至在我看来是面向对象对程序世界本质的另类解读。
项目中常常遇到一些逻辑繁杂,界限模糊的功能。其实用流的方式砍成两段,就能很好理解了。比如最近改的PCIE DMA传输部分。当然流不是简单的使用,比如来个抽象的Instream,OutStream之类的。从Instream,outStream抽离出Channel,DecoratedInstream,DecoratedOutStream更具实用性。