Fork me on GitHub

After code
  • Geeker
  • Gamer
  • JS
  • C
  • Node
  • React
  • Hippop
  • TDD
That Is An Byte of Me

[afterCode] webstorm tips 0008: 查看代码依赖

17 Mar 2017

今日快捷键


依赖分析

已经有了npm.anvaka.com 用来可视化一个 node 模块的依赖关系, 图形化起来很炫酷, 但是并没有什么实际的作用, 今天介绍的 webstorm 的代码依赖查看功能查看的是自己代码代码的依赖关系.

为什么代码的依赖关系需要分析呢?

软件中依赖分为两种: 一种叫做运行时(Running Time)依赖, 比如你的应用需要依赖数据库, 这样的依赖是实实在在存在, 不可能消解的; 另外一种叫做 代码依赖 , 可以理解为代码模块之间的依赖. 一般情况下代码依赖关系会是运行时依赖的的体现, 这很好理解: 你的应用依赖 mongodb 那你肯定就至少会有一处 require('mongoose')的代码, 反映了应用运行时是依赖数据库的.

代码依赖和运行时依赖一致的时候, 一般情况下也没有什么大的问题. 但是在开发中各种变化很剧烈的时候就会有一定的痛点出来了. 比如刚才说的”应用依赖的数据库是 mongoodb”; 换句话说我们的高层设计依赖与底层的具体实现. 再直白的说就是业务逻辑的实现需要依赖于底层数据库的选择. 可是业务逻辑真的需要依赖数据库吗? 换一套数据库我的业务逻辑的代码就要重新修改吗? 业务逻辑还是那个逻辑啊, 为什么要改!

这个时候就有一个面向对象设计的一个概念叫做依赖反转原则.

A. High-level modules should not depend on low-level modules. Both should depend on abstractions.

B. Abstractions should not depend on details. Details should depend on abstractions.

from wiki

翻译如下

概念永远是概念,我们在实际代码开发的时候, 不可能一开始就能提取出好的抽象. 好的设计都是一步一步进化来的, 所以当我们发现代码的依赖关系复杂的时候, 比如代码的可测性很不好的时候, 这时候就需要分析下你的应用的依赖是不是违反了 依赖反转原则. 当然如果有个图形化的工具来可视化自己代码的依赖的话, 也不失为一个好的方法.

如何查看依赖

首先你必须安装 webstorm 2017.1 , 目前(new Date() => 2017-03-17T01:59:35.032Z))处于EAP的RC阶段阶段, 大家可以提前尝尝鲜.

在项目目录选择需要分析的文件或者文件夹, 按照下图点击可以

show diag

等一会,依赖关系图就出来了

diagram

分享到: QQ空间 新浪微博 腾讯微博 微信 更多
comments powered by Disqus