• 对编程理解的提升


    最近开始使用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描述流程,还有异步,还有事件触发等等;代码库也不仅仅局限于解决实际问题,还有解决流程控制问题,映射生活场景,也突然想到设计模式,也应该无非就是对生活场景的一种描述。

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

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

  • 相关阅读:
    0.Mysql优化框架
    [C]extern char **environ
    [C]Armstrong Number
    [C]struct, union的结合
    [C]enum类型
    [C]fibonacci series, recursion, time.h
    [C/JAVA]二维数组
    [C] char**, swich-case, refactoring, stdbool.h
    hardly/scarcely ... goes by without ...
    [C]随机数生成
  • 原文地址:https://www.cnblogs.com/yangqionggo/p/5104277.html
Copyright © 2020-2023  润新知