代码阅读工具

阅读陌生代码库是工程师日常工作的重要组成部分。面对动辄数十万行的源码,仅靠编辑器内置的跳转和搜索往往难以快速建立全局认知。围绕「理解代码」这一需求,开源社区沉淀出两类工具:一类以 Doxygen 为代表,侧重从源码与注释中抽取并生成文档;另一类以 Sourcetrail 为代表,侧重提供交互式的源码浏览器,帮助人在图形界面中追踪符号与调用关系。本文对这两款工具做一次梳理。

Js 协程简介

这篇文章 JavaScript Promise,async/await 是对 async/await 最详细的介绍,而且 文章开源:

回调地狱:

loadScript('1.js', function(error, script) {

  if (error) {
    handleError(error);
  } else {
    // ...
    loadScript('2.js', function(error, script) {
      if (error) {
        handleError(error);
      } else {
        // ...
        loadScript('3.js', function(error, script) {
          if (error) {
            handleError(error);
          } else {
            // ...加载完所有脚本后继续 (*)
          }
        });

      }
    });
  }
});

嵌套调用的"金字塔"随着每个异步行为会向右增长。很快它就失控了。

C++ Promise/Future 模型

Promise/Future 是一种经典的异步抽象,正因为它提供了一套「标准化」的概念,因而衍生出许多可能性。这就如同工业史上的集装箱、软件界的 Docker——凭借「标准化」这一关键属性,不同组件可以简单地自由组合,从而大幅提升整体效率。

c++20协程简介

参考:

C++20 协程通过 Promise 和 Awaitable 接口的十余个函数,向程序员暴露出定制协程流程和行为的入口。实现一个最简单的协程,通常需要用到其中的 8 个(5 个 Promise 函数 + 3 个 Awaitable 函数)。下面先从 Awaitable 的 3 个函数说起。