抽象泄露(Leaky Abstraction)引发想象

来源:互联网 发布:卫生部数据标准 编辑:程序博客网 时间:2024/06/05 05:42

这篇文章感觉不错,和最近工作的一些心得互相照应上了。先说这篇文章里面我最喜欢的一句: So the abstractions save us time working, but they don't save us time learning.

是的,抽象只是在工作的时候节省你的时间,但并不能节省你学习的时间。你需要学习抽象的工作原理以及抽象的对象,这个学习时间是不能节省下来的。


抽象在各领域方面都存在。软件开发上重要的一点就是分层、抽象,而分层又是为了更高的抽象服务。例如提供API,这就是对系统行为、功能、性能的抽象。在系统实现过程中又会经历各种抽象过程,要不然怎么会有《设计模式》这样的书籍出现。软件系统中的抽象是为了让上层调用者不需要关注底层实现。TCP/IP协议分层就是抽象。


目前在公司做关于RPC Server相关的开发,在工作以及学习的过程中也发现,代码中抽象程度不够,很难从高层次看出来各部分代码的相互关系,也就是说代码间耦合很严重。只要浸淫代码许久之后才能做到来去自如,游刃有余。代码结构上存在缺陷,导致一个问题就是复用困难。


因此我尝试将其中server实现的相关代码剥离出来,提供两个API,一个是open server,一个是close server,同时open server的时候要求用户填入回调函数:用户接受数据和发回数据。这首先实现了接口最小化原则,隐藏了server运作和实现的细节。server被我抽象出来可以作为一个单独的组件使用、维护、修改、升级。以后再加上一些简单的文档说明,那么任何一个新人都可以直接复用已有的代码,但是他需要付出一些学习的时间,了解一些server的行为、功能、性能知识,甚至可以根据新需求升级server。



0 0
原创粉丝点击