# class 2-3

# 关于把数据库当成黑盒使用的错误,其实也会在你学习软件开发中遇到类似 的问题,比如,对操作系统的黑盒化,比如对某些开发框架的黑盒化等等, 请你思考一下,你的学习过程中,还能找到类似的例子嘛?

对编程语言的黑盒化:

在我们学习一门编程语言的时候,我们首先会学习这门语言基本的数据结构,以及这些数据结构所对应的一些方法和函数。在使用这门语言时,我们想当然的使用这些东西,遇到不会的操作,查查文档,或者google一下,copy代码放到自己的项目中。但其实查看源码有时候会更高效。比如java中常用的数据结构Stack,我们知道实现一个栈,不应该使用Stack类,但很少深究为什么官方不推荐使用Stack类,查看一下Stack的源码:

public
class Stack<E> extends Vector<E> {
    /**
     * Creates an empty Stack.
     */
    public Stack() {
    }
}

可以发现Stack类继承自Vector类,而Vector类中不仅包含栈所需要的push、push 等操作,还包括insertElementAt(E obj, int index),addElement(E obj)等方法,而这些方法都违背了栈后进先出的原则,这显然是不合理的。

因此要使用 Deque<E> 来替代Stack

对于这样的常用工具类,我们都可以通过查看源码来找到其实现细节,以提升代码的质量。

Last Updated: 1/16/2021, 9:27:12 AM