想起同事以前偶尔说的OOP(面向对象编程),想起他案头上的那本厚厚的设计模式,再看看他写的代码,我都不相信这是他写的。OO有啥用?OOP有啥用?设计模式有啥用?归根结底,“理论有何用”?
这些问题,我之前也怀疑过,也迷茫过,但后来我尝试着慢慢的去使用,一开始有点“鹦鹉学舌”,有点“画蛇添足”,但后来我慢慢领悟到,理论来自实践,理论指导实践,并非理论无用,而是要先学习理论,继而使用理论,然后检验理论,发展理论,甚至找到新的理论并实践出巨大的成就。两个多世纪以来世界科学技术的发展印证了这一理论和实践的关系,“理论物理学”便是物理学发展的最高境界!
回过头来说说我们的OO(面向对象)理论,为什么需要OO?因为历史上的“面向过程”遭遇了“软件危机”,软件系统越来越复杂,变化越来越快,封装复杂性,抽象出不同问题间的共同性,以“不变应万变” 来解决现代软件系统复杂多变的特点。自从OO理论提出以来,近20年的软件取得了飞速发展,各种具有OO特点的高级语言层出不穷,比如 C++,Java,C#等等,但并不是我们有了这些OO的工具和语言,就等于我们开发的软件就是符合OOP的,如果我们拥有OO的理论,而不到实践中去使用它,那等于我们没有理论,等于我们永远处在小作坊式的软件开发水平,这是我们学习理论的目的吗?天天写哪些“垃圾”(对不起我这么说,我承认我自己有时候也会写垃圾代码,但不经常是)代码,堆砌出哪些Bug重重,效率低下,运行不稳定,客户不满意的软件,我们有什么成就感呢?
所以,请先不要说“理论有何用”,先问问自己你“用理论”了吗?