所在的位置: c++ >> 历史起源 >> 谈谈编程思想

谈谈编程思想

这段时间又攒了很多答应了,但还未动手的文章。大概一两周前,有个读者留言:「程序君,能发篇文章有关编程思想的吗?我是编程初学者,对编程思想没啥概念,求传授点经验!」

今天就讲讲编程思想。编程思想是个宏大的主题,我不敢保证我能在短短的一两个小时里讲得全面而深入。推荐给大家一本好书『冒号课堂』,是国内为数不多的讲编程思想的经典之作。无奈这本书已经不再出版,只能在图书馆里一睹芳容(我几年前在国图和它偶遇)。

各种软件思想虽然层出不穷,但其本质是降低系统复杂度,减少重复,减少代码的变更。掌握了这个大方向,理解各种编程思想就容易多了。

(下文所涉及的代码大多是剪短清晰的python代码)

以程序君不太准确的分类,编程思想可以分为以下几个大类:

原则(Principles)

范式(Paradigms)

方法论(Methodologies)

模式(Patterns)

我们一点点展开,说到哪算哪。

原则(Principles)

我认识(或者说现在想得起来的)的原则主要有以下几种:

DRY(DontRepeatYourself)

OCP(OpenClosePrinciple)

SoC(SeparationofConcerns)

IoC(InversionofConcerns)

CoC(ConfigurationoverConvention)

Indirection(Layering)

Dontrepeatyourself很好理解。当你第二次写同样结构,变化不大的代码时,脑袋里就要闪现一个大大的问号:我是不是在repeatmyself?如果是,就要重构,或封装,或抽象,或函数化,总之一个目的,消除重复。以笔者的经验,DRY原则看似基本,实则很多大型软件公司都未能做好,copypaste到处可见。我们写代码,从一开始就要把握好这个原则,否则在「破窗理论」的指引下,代码的质量会快速划向万劫不复的深渊。

OCP原则是说「软件要对扩展开放,对修改封闭」。比如你写一个messagedispatching的代码,如果你只用一个主函数去处理所有消息,那么,每加一个messagetype,你就需要修改这个函数使之能处理新的消息。正确的,使用了OCP原则的代码是每个消息都有自己的callback,主函数仅仅根据消息的类型找到对应callback,然后执行。这样,新加的任何消息都无需改动主处理函数。这就是「对扩展开放,对修改封闭」的一个最浅显的例子。软件开发中的很多手段,如继承,如Observerpattern(观察者模式)目的就是实现OCP原则。

以上两个原则是最基础最基础的原则,之后的原则都是在此基础上衍生出来的。

SoC听起来高大上,其实就是解耦,将复杂系统分治成不同的子系统,尽可能将变化控制在子系统中。如果你十多年前做过互联网,就知道那时的html混杂着语义和样式,牵一发而动全身;现在的网站html/css基本分离,上帝的归上帝,撒旦的归撒旦,各司其职。这就是SoC。另一个SoC的经典应用场景就是MVCdesignpattern——整个系统的逻辑被分成Model,View,Controller三层,(理想状态下)其中一层的改动不会影响到另一层。

IoC原则的思想是Dontcallme,Illcallyou。这一原则促使软件产业从lib时代发展到framework时代。想想libc,里面有各种各样的函数供你驱使,整个控制权在你;再看看django这样的framework,你并没有整个系统的控制权,你只能被动地按照规范写出一个个函数或类,在必要的时候由framework调用。使用IoC原则的好处是高级的细节和逻辑被隐藏,开发者只需要







































小儿白癜风有什么症状
北京白癜风哪里治得好



转载请注明:http://www.nydjfy.com/lsqy/1739.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了