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

文章探讨了抽象在工作中的应用,强调了抽象在节省工作时间的同时,并不能节省学习时间。通过具体案例分析,作者提出了提高代码抽象度的方法,以解决RPCServer开发中代码耦合严重的问题,实现接口最小化原则,提升代码复用性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这篇文章感觉不错,和最近工作的一些心得互相照应上了。先说这篇文章里面我最喜欢的一句: 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。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值