越看《代码大全2》越发现它的博大精深,真的由衷佩服作者,有如此宽广的知识面,而且文笔又是这么的好,作为专业技术书籍,没有写得框框条条,枯燥无味。而是写得详略有当,排版布局直观,为能遇到这样的好书真是感到荣幸。如果刚工作时就接触这本书,并能理解的话,相信现在水平绝对是几何级别的。
今天看到了第6章的:抽象数据类型(ADT),整个6.1就讲了什么是ADT,它有什么好处,并举了实际的例子,以方便理解ADT,整个6.1核心就是要明白抽象数据类型概念的定义。
说实话,第一天看时,也是迷迷糊糊,没看懂,第二天再重复看,感觉恍然大悟,有些理解ADT了,过了几天再来看,感觉又迷糊了,经过思考以下是我的理解。
什么是抽象数据类型?
作为程序员,当我们看到XX数据类型时,最先想到的就是程序语言的数据类型,如整型、字符型等。但在本文在的ADT并不是指这些或类似这些的程序语言数据类型。
抽象数据类型(ADT)该怎么分词来理解呢?我思考了很长时间,我觉得应该是:抽象/数据类型,抽象是一个动词,一种思考的动作,而数据类型,不是程序语言的某种整型或字符型,而是你的具体业务对象(可能是一个图形窗体及能影响他的操作,也可能是一个文件及对文件进行的操作)
为了更便于整理,作者举了个例子,一个能控制字体、字号、加粗等功能的程序,在不使用ADT的情况下的实现方式,和使用ADT的实现方式,通过这个例子能更清晰理解ADT。
使用ADT的益处
可以隐藏实现细节
隐藏实现细节,可以让你修改内部实现时,不影响所有外部的调用。
改动不会影响到整个程序
让接口能提供更多信息
更容易提高性能
让程序的正确性更显示而易见
程序更具说明性
无须在程序内到处传递数据
你可以像在现实世界中那样操作实体,而不用在底层实现上操作它
最后一点益处,我觉得能帮助我们正确、深入、直观理解ADT的意义,我认为ADT是一种设计思想,而不是具体的某种技术或实现,是要用ADT的思想来抽象业务,指导我们使用具体的编程语言技术,开发出软件功能。
使用ADT的指导建议:
- 把常见的底层数据类型创建为ADT并使用这些ADT,而不再使用底层数据类型
- 把像文件这样的常用对象当成ADT
- 简单的事务也可当做ADT
- 不要让ADT依赖于期存储介质