编写可测试的javas

1. 可测试的JavaScript

.....

2. 复杂度

复杂度代表糟糕,简单代表美好

衡量复杂度: JSLint,圈复杂度,代码行数,扇入和扇出

我们会花费50%的时间在调试和测试我们的代码

认识问题是解决问题的第一步,了解项目的复杂度问题所在,然后一个个解决

代码尽量减少

函数最好保持读写分离

圈复杂度是表示代码中独立现行路径的数量

function sum(a, b) {
  if (typeof(a) !== typeof(b)) {
    throw new Error('Cannot sum different types!');
  } else {
    return a + b ;
  }
}

这里的话圈复杂度为2

有人说: 任何方法的圈复杂度都不应该大于10

可以使用jscheckstyle && Jenkins把圈JS文件的圈复杂度计算出来

如果发现代码被编写了两遍,就应该抽取出来了

2.5 扇出

过程A的扇出是表示过程A的内部流程数量与过程A所更新的数据结构数量之和.

下次操作当做一个内部流程

  1. 如果A调用B
  2. 如果B调用A,并且A返回一个B随后可以利用的值
  3. 如果C调用A和B,且A的返回值传递给B

2.6 扇入

过程A的扇入是过程A的内部流程数量与欲从过程A中获取信息的数据结构数量之和

2.7耦合

  1. 内容耦合: 例如外部对象O被其他对象修改,耦合分数为5

    O.property = 'blah';
    O.method = function(){};
    
  2. 公共耦合: 两个对象共享另外一个全局变量,耦合分数为4
  3. 控制耦合: 用参数来设置外部对象,耦合分数为3
  4. 印记耦合: 向外部对象传递一个记录,而只使用该记录的一部分,耦合分数为2
  5. 数据耦合: 一个对象传递给另一个对象消息数据,而没有传递控制外部对象的参数时.
  6. 无耦合

代码审查时查找代码耦合一个很好的方法

YUIdocjs 可以转注释为HTML

3. 基于事件的架构

可以参考基于socket.io的样例实现

npm install EventHub

启动 npm start EventHub

4. 单元测试

最难编写的的单元是第一个单元测试

测试框架最重要的是将测试聚合到测试套件和测试用例当中

一个模块的所有测试归类到一个单独的测试套件当中

一个好的单元测试最重要的是隔离和作用域

4.3 编写好的单元测试

4.3.1隔离

单元测试测试的是代码的最小部分-方法

© 404mzk all right reserved,powered by Gitbook该文件修订时间: 2017-04-06 01:42:56

results matching ""

    No results matching ""