对类的依赖关系可视化的好处:松耦合的代码设计
写出简洁,优雅的代码是每一个程序员的追求。但是实际的项目过程中,我们时常面对着很多糟糕的代码,我们可能在同一个项目中重复的写着其他人已经完成过的工作,抑或遗留一些永远不会再用到的历史代码,抑或组件之间的相互依赖过于复杂,不同的类责任划分不合理,某些类承担了过于繁重的工作。这些情况都会给我们留下一个紧耦合的项目,不方便维护和测试。
通过对导入类的可视化,可以清晰的查看项目中的各个类之间的依赖关系,模块与功能划分是否耦合度过高,是否有功能重复的类等等,不仅如此,对于学习或者熟悉新的项目也是事半功倍的。
案例展示:
下面是第三方库AFNetworking的类之间的依赖关系图
AF.jpg从图中我们可以清晰地看出AFNetworking中类与类之间的依赖关系,其中AFURLSessionManager处于一个核心的位置,结合不同模块的类做了核心的工作,AFHTTPSessionManager引用了AFURLSessionManager,并在其核心功能上做了封装,为使用者提供出更加易用的接口。
可视化操作步骤:
通过编写python脚本,对目录中的每个类文件进行中提取导入,将结果生成.dot文件,再用OmniGraffle打开即可。
-
编写python脚本,这里已经有一个开源项目,可以直接下载源代码,点击链接。
-
打开终端,键入:
$ cd objc_dep-master
进入脚本所在目录,键入:
$ python objc_dep.py /Users/XXX/AFNetworking > fswalker.dot
其中/Users/XXX/AFNetworking为项目路径,fswalker.dot为生成可视化文件的文件名,该文件和脚本在同一个目录下。
- 安装OmniGraffle,并用OmniGraffle打开fswalker.dot文件即可。
网友评论