抽象泄露(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。
- 抽象泄露(Leaky Abstraction)引发想象
- 硬件抽象层HAL (Hardware Abstraction Layer )
- The Law of Leaky Abstractions 抽象漏洞定理
- PHP - Manual手册 - 语言参考 - 类与对象(PHP 5)- Class Abstraction类抽象
- PHP - Manual手册 - 语言参考 - 类与对象(PHP 5)- Class Abstraction类抽象
- 基础概念辨析:重访数据抽象(On Understanding Data Abstraction, Revisited)
- Java的Abstraction抽象类/方法-笔记
- The progress of abstraction (抽象过程)
- 避免CreateThread引发泄露
- handler引发内存泄露
- handler 可能引发泄露
- 内存泄露(一) Android中使用Handler引发的内存泄露
- tensorflow学习笔记(二十七):leaky relu
- Android硬件抽象层HAL(Hardware abstraction layer)分析
- Abstraction and Structure——《Learning Python》抽象之函数
- 数据库抽象层Database Abstraction Layer for PHP
- RuntimeException引发的线程泄露
- Message引发的内存泄露
- MSSQL XML使用(三):把字段名作为XML的节点
- Objective-C语言关键词,@property与@synthesize使用。
- 字符串String类学习总结
- WdatePicker日历控件使用方法
- http协议请求头与响应头相关注解
- 抽象泄露(Leaky Abstraction)引发想象
- CUDA学习笔记——一些基本概念
- Fedora 21 mp3
- Cocos2dx技术(二)——Cocos2dx开发环境搭建(on windows)
- 在ssh中通过配置文件获得数据的connection
- jquery 原文件报错
- Android拍照,上传,预览综合
- 数据库中使用自增量字段与Guid字段主键对比
- 在java中将各种类型数据转化为json和从json中取数据