何谓"自顶向下",何谓"自底向上"

相信每一个coder都听说过“自顶向下”以及“自底向上”这两个名词。
我也是很早就听说过这两个名词,感觉是”不明觉厉”。

有一天,我打电话给一个做C语言开发的朋友说,我说我一直在做Java,想学一点C,问他有什么好的建议。
他说,他也有类似的想法,他说他一直在做C,想有机会学一点Java.然后他补充一句:他这是自底向上的学习,而我这叫自顶向下的学习。
我当时一愣,不愧是老司机:原来这两个词表达的是学习过程相关的意思。

  • 直到不久前,我才知道,所谓的”自顶向下”与”自底向上”,指的是程序构造的两种不同的方式。换个说法,也可以说是“由粗到细”及“由细到粗”。

  • 怎么理解呢?举个栗子:

    假设现在有一个需求是这样的:将C盘里面的视频文件全部拷贝到D:\video\目录下。

那么,由粗到细(自顶向下)的构造程序的方式是:先从大的方向考虑,完成这个程序需要那些步骤,比如:
- 先判断有没有C盘
- 再判断C盘里面有没有视频文件
- 判断有没有D盘
- 判断D盘是否还有存储空间
- 拷贝C盘的视频到D盘
- 结束
先不考虑每个方法的具体实现,而是考虑一下,需要那些步骤,等整体步骤把握好了之后,再考虑这些步骤具体该怎么实现。比如:如何判断有没有C盘,如何判断C盘里面有没有视频文件等。
这样子,先搭建骨架,等骨架搭建好了之后,再去填充具体内容。这种方式,就被称为由粗到细或者说自顶向下的构造方式。

而与之相反,我们也可以先实现细节:比如:如果进行文件拷贝,如何判断有没有视频文件 。等这些具体的细节完成之后,再去搭建骨架,然后完成整个程序。这种,先完成细节功能,再组装到整体骨架中的方式就是由细到粗或者说是自底向上的构造程序的方式

  • 并不讨论哪种方式更好。在实际开发过程中,往往两种方式都会被运用到。

你可能感兴趣的:(程序,computer)