编程语言的发展

面条式的代码

刚开始的高级语言大多采用面条式的代码,随着代码的复杂化,这会造成代码极度混乱。

结构化编程

随着软件行业的发展,面条式的代码是越来越不适应发展的需要。此时出现了结构化编程,即面向过程的开发,这种方式把代码分割为多个模块,增强了代码的复用性,方便了调试和修改,但是结构也相对复杂一些。一般采用流程分析的方式解决问题:

1.“您的业务流程是怎么样的?”

2.将需求理解成一条条业务流程

3.分析流程,交织流程,划分一个个功能模块

4.最后通过一个个函数实现需求。

对于小型软件来说,或许是最直接最简捷的做法。

    面向过程关注业务流程,无论分析做的如何好,永远无法从用户那里获得所有的需求,而业务流程却是需求中最可能变化的地方,业务流程的制定需要受到很多条件的限制,甚至程序的效率、运行方式流程的变化反过来会影响业务流程。有时用户也为了更好地实现商业目的,主动地改变业务流程,并且一个流程的变化经常会带来一系列的变化。比如请假,今天可以是打招呼就行,明天就得多级审批。流程的易变性,使得把流程看得很重,并不能适应变化。

   面向过程通过划分功能模块,通过函数相互间的调用来实现,但是需求变化时,就需要更改函数。这就导致经常会出现这样的问题:

  1. 改动的函数有多少地方在调用,关联多少数据,很不容易弄清楚!
  2. 开发者本人弄得清楚,但下一位维护代码者不能理解所有函数间的彼此调用关系!
  3. 函数的修改极易引起不必要的Bug,找Bug维护Bug,耗费大量时间

面向对象的编程

    与其抱怨需求的总是变化,不如改变开发过程,从而有效地应对变化。面向对象的编程由此而生。面向对象关注的是对象,对象的有点在于,可以定义自己负责的事物。对象应该自己负责自己,而且应该清楚地定义职责。

     面向对象的开发者,把需求理解成一个一个的对象,关注:

    “这个东西叫什么,他从哪里来,他能做什么事情?”

然后制造这些对象,让这些对象相互调用,符合了业务的需要。需求的变化时必然的,那么尽管无法预测会发生什么变化,但是通常可以预测哪里会发生变化。面向对象的优点之一,就是可以封装这些变化,从而更容易地将代码与产生变化的影响隔离。代码可以设计得使需求的变化不至于产生太大的影响。代码可以逐步演进,新代码可以影响较少的加入。

    引入面向对象的影响

    引入面向对象的编程,相对于结构化编程,有了许多变化:

  1. 问题的解决需要首先开发业务对象,然后才能实现业务流程。问题的解决,相对而言不再那么直截了当。
  2. 面向对象编程的发展,引出了设计模式等各种工具、框架。
  3. 面向过程的开发相对容易,但不易于变化。面向对象设计困难,但更能应对千变万化的需求。

1.《大话设计模式》

猜你喜欢

转载自blog.csdn.net/qq_33355691/article/details/83280283