前言
相信每个程序员都分析过源码。 在分析源代码的过程中,不仅要了解代码实现的功能(业务逻辑),还需要深入了解程序代码的执行过程和结构。 通常,在了解代码执行过程(动态模型)时,最好从了解代码结构(静态模型)开始。 那么有哪些工具可以帮助我们快速了解程序代码的结构呢? 在面向对象编程领域,我们常用的建模语言之一就是UML,而UML中的类图(程序静态结构的表示图)非常适合表示代码的结构。 话不多说,让我们介绍一下本文的明星:PlantUMLParser 插件。
阅读这篇文章我能得到什么?
读完本文后,我们可以使用PlantUMLParser插件(IntelliJIDEA开发功能)快速查看指定目录下所有包和类组成的完整UML类图(即程序的静态结构)。 通过类图,你可以听到程序代码的封装结构、所有类以及类属性方法,很容易看出所使用的设计模式。 因此,它可以帮助您快速了解程序的源代码,提高工作效率。
先举几个反例:
PlantUML简介
PlantUML 是一个开源软件,可以以类似编程的方式绘制各种 UML 图。 其官网:开源工具,使用简单的文字描述来绘制UML图。
下面显示了使用 PlantUML 绘制的用例图。 一侧的代码是我们自己编译的,右侧是PlantUML根据编码手动渲染的UML图。 事实上,编码是句型所需要的。 想了解更多可以查看PlantUML的官网(上面给出了跳转链接)。
安装PlantUMLParser插件的相关依赖
如上图,PlantUMLParser依赖于PlantUML插件(PlantUML不仅仅是一个插件,官网还提供了一个独立的Java程序(jar包),我们也可以通过这个独立的程序来绘制UML图),PlantUML依赖在 graphviz-dot 包上,所以,我们首先需要安装 graphviz-dot。
安装 graphviz-dotLinuxWindows
下载链接:
苹果
brew install graphviz
安装完成后,我们就可以启动PlantUML插件了
安装 PlantUML 插件
这个插件可以将PlantUML的代码转换成图片,还支持多种方式导入:如svg、png等,传输非常方便。
IDEA插件的安装非常简单。 无非就是搜索插件名称,然后点击安装即可。 这里不再多介绍,用一张图来表示:
安装插件后,我们需要做一个简单的配置:为PlantUML插件指定graphviz-dot执行程序位置:
MAC系统配置方法
配置完成后,我们可以尝试一下:
找到一个目录,点击New,选择PlantUMLFile
选择图表类型,设置图表名称
两侧是我们输入代码的地方,两侧会实时刷新
简单画个类图:
示例代码:
@startuml
'https://plantuml.com/class-diagram 还贴心的给你展示了对应图形的语法文档
package pokegame <>{
class RoomStoreFactory{
-List rooms
-boolean logincheck(String roomid,String user)
+Room initRoom(String roomid,Player player)
}
package room <>{
package core <>{
class Room {
-String id
+void enter()
}
note left of Room::enter
进入房间
end note
enum RoomStatusEnum {
ROOM_PREPARE
ROOM_RUNNING
ROOM_PREPARE_END
}
Room *-- RoomStatusEnum
class Poke{
-int category
-int size
}
note left of Poke::category
表示黑红花片,分别用4321表示
end note
note left of Poke::size
表示面值,用1-13表示,
大小王分别用
999999和999998表示
end note
abstract baseGameRule {
#int seat
#int pair
+ {abstract} void start(Object obj)
+ {abstract} void shuffle(Object obj)
+ {abstract} void decide()
}
note left of baseGameRule::seat
游戏允许的座位数
end note
note left of baseGameRule::start
开始/重置/下一把游戏
end note
note left of baseGameRule::pair
扑克牌副数
end note
class Camp {
#String status
#List players
}
}
package levelup <>{
'升级 游戏规则
class LevelUpGameRule extends baseGameRule{
}
note top of LevelUpGameRule
打升级 游戏规则
end note
class LevelUpCamp extends Camp{
-int level
-boolean isCur
}
note top of LevelUpCamp
打升级 阵营
end note
note left of LevelUpCamp::isCur
是否是进行时
end note
}
}
class Player {
-String userId
-Session session
}
}
Room *-- baseGameRule
Room o-- Player
baseGameRule *-- Camp
baseGameRule o-- Poke
RoomStoreFactory "1"-->"*" Room
@enduml
回到题外话,我们把它拿出来,安装PlantUMLParser插件
安装 PlantUMLParser 插件
插件安装更加简单uml软件建模过程,安装后无需额外配置
安装完成后uml软件建模过程,重新启动IDEA,然后选择源码的一个目录,右键PlantUMLParser,输入生成的文件名,点击generate,就可以看到该目录的UML类图。
至此,这篇文章就结束了。
如果您觉得这篇文章写得不错,请点赞、转发、评论【韩萧】