第二章的章名是“是懒人造就了方法”,第一眼看到这句话,我就深有感触。话虽有理,但也存在误区,勤快人也不都是蛮干的。而李冰发现“积薪烧之”的原因,也不都出于他懒,其中有偶然的成分。不过,有目的的创造方法,这个目的确实是想省事。
关于把所有代码都写到一个文件里,我的本能是抵触的。我感觉把东西分开更有条理性,看着更加舒服。再说都写到一起,我自己复习起来都费劲。然而写类的时候我却写的不太标准。
我想说整理书和整理脑子里的知识,是完全不一样的。书是具体的事物,用手就可以。但是整理知识,不将这类知识学到一定程度时是做不到的。就好像高三的时候,数学学了什么,就连要考,可能考什么我都知道。但编程知识,我练线性规划都没的做,谈何整理呢。
作者有着,程序 = 算法 + 结构 + 方法,的想法,与老师所讲的,程序 = 数据 + 算法,不完全一样。虽然直观上看上去结构加方法与算法差不多,但直觉上我感觉有些区别。让我说也说不出个所以然来。
接下来,作者又写了他与soul的部分谈话。他们的话题对于我来说有点深,不,是十分深。其中,我就注意到了,他们关于面向过程和面向对象进行了讨论。说起这个,面向过程我都不知道是什么。而面向对象,虽然我学了,但是由于其太抽象,我也不知道它具体讲的是啥。所以,我上百科查了查他们的意思。百科回答的很鸡肋:属于,懂者不查,查者看不懂。只记下了面向对象是封装、继承和多态。
我放弃了看百科,选择了相信广大的网友们。其中有一个回答举出一个例子是:
用两种面向方法编辑下棋。
面向过程:
1.开始游戏 2.黑子先走 3.绘制画面 4.判断输赢 5.轮到白子 6.绘制画面 7.判断输赢 8.返回步骤2.9.输出最后结果。
面向对象:
整个游戏分为1.黑白双方,行为一致2.棋盘系统,负责绘制画面,3.规则系统,负责判定诸如犯规、输赢等。玩家对象负责接受用户输入,并告知棋盘对象棋子布局的变化,棋盘对象接收到了棋子的变化负责在屏幕上面显示,同时利用规则对象来对棋局进行判定。
看了这个我就明白了一点。关于面向对象的优点很多,什么重用性,继承性高,降低工作量。之所以我感觉不到什么,一方面是因为一开始接触的就是面向对象,另一方面,很多人都是这么思考或分解问题的。而面向过程的优点就是当程序短而小的时候,效率高,省内存。
有点一知半解,也可能有些曲解。
回答者有几句话是这么说的:初学者或很蹩脚的程序员很可能以面向对象之虚而行面向过程之实。回想起我这个蹩脚初学者的蹩脚类函数,确实有些面向过程的嫌疑。在以后,我可得区别的清楚一些。