对编程理解的提升

最近开始使用nodejs写聊天系统的一个Demo,使用最频繁的就是使用socket.io的事件机制。在nodejs的编码过程中,比如查询数据库,到处都是回调。然后可能写了一堆socket.io的事件之后,突然有了一种感受,发现事件的原理应该也是采用了回调机制。

此时此刻,半夜两点钟,醒了。晚了下手机没电了,然后拿起了ipad。明明之中想创建一个事件,可以监听和发送消息。然后查了下nodejs官网的events模块,看完之后发现我应该也可以写一个事件触发器了。突然想起之前翻的《nodejs深入浅出》都有介绍Stream模块,怎么没看到events模块呢,所以打开了多看阅读,又翻了一遍目录,原来把events模块的内容放在了异步编程这一章。

在之前自己写查询数据库的代码中,碰到到的一种现象,不同分支的两次查询回调又需要调用另外一个查询一句,当时想的是“哎,回调这么麻烦,又要在此封装一个函数”。然后当我在读《nodejs深入浅出》的事件发布/订阅模式的时候,突然发现这也是解决此类问题的啊,然后继续阅读Promise和Deferred模式的时候,以及尾触发和Next的时候,async等章节的时候,这些设计模式,理念,库都是使用最基本的回调等其他实现的。这些都在解决一个问题,代码的流程控制问题。

突然让我意识到,if语句,for语句是描述我们生活场景的,而事件发布/订阅,Promise和Deferred, next, async也是抽象的藐视我们生活场景的。让我意识到代码不仅仅是只有if, for描述流程,还有异步,还有事件触发等等;代码库也不仅仅局限于解决实际问题,还有解决流程控制问题,映射生活场景,也突然想到设计模式,也应该无非就是对生活场景的一种描述。

说白了就是抽象,但抽象的东西不同,有些抽象了业务组件,有些抽象了通用组件,有些抽象了功能组件,还有就是抽象了流程控制。

附:可能文字描述的非常不通顺,但突然感觉对编程的理解有了一个层次的跨越。

posted @ 2016-01-06 03:39  杨琼  阅读(300)  评论(0编辑  收藏  举报