Skip to the content.

逻辑抽象基础

[代码元素]

代码内容是处理数据(deal with data). 处理数据会存在下面这些内容:

abstractions 抽象以上元素.

第一个问题是流程抽象,第一个明显的流程是loop或者叫迭代,用的是Iterable,典型类型有Array等。而错误处理用到Either,处理effects用的IO,异步任务用到的Task(Promise).

第二个问题是形式主义,链式调用(面条代码),回调调用(回调地狱),pointfree style.

lodash/fp、ramda辅助函数.

主要解决形式主义、风格的问题

[代码表达]

主要策略包括需要拆分, 需要归纳, 需要转化

  1. 模块化/分包

  2. 拆分模式(设计模式中的各种)

  3. 分层设计

[代码限制]

如下是eslint的一些限制示例:

// 强制限定一个函数不得超过120行,12号字体一屏幕高度大概在40行左右,限制3屏幕以内
'max-statements': ['error', 120, { "ignoreTopLevelFunctions": true }],

// 嵌套深度不能超过5层
'max-depth': ['error', 5],

// 回调函数最多3层
'max-nested-callbacks': ["error", 3],

// 函数参数个数限制在5个以内
'max-params': ['error', 5],

// 设置一个圈复杂度阈值20来控制代码的复杂度
'complexity': ["error", 20]