今日快捷键
无
依赖分析
已经有了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阶段阶段, 大家可以提前尝尝鲜.
在项目目录选择需要分析的文件或者文件夹, 按照下图点击可以
等一会,依赖关系图就出来了