读 Go 源码,可以试试这个工具

简介: 读 Go 源码,可以试试这个工具

原文链接:读 Go 源码,可以试试这个工具


编程发展至今,从面向过程到面向对象,再到现在的面向框架。写代码变成了一件越来越容易的事情。


学习基础语法,看看框架文档,几天时间搞出一个小项目并不是一件很难的事情。


但时间长了就会发现,一直这样飘在表面是不行的,技术永远得不到提升。


想要技术水平有一个质的飞跃,有一个很好的方法,就是读源码。


但读源码真的是一件很有挑战的事情。


想想当年自己读 Django 源码,从启动流程开始看,没走几步就放弃了,而且还放弃了很多次。


这么说吧,我对 Django 启动部分的代码,就像对英文单词 abandon 那么熟悉。

后来总结经验,发现是方法不对。


主要原因是一上来就深入细节了,事无巨细,每个函数都不想错过。结果就导致对整体没有概念,抓不住重点,又深陷无关紧要的代码。最后就是看不进去,只能放弃。


最近看了一点 Go 源码,慢慢也摸索出了一些心得。有一个方法我觉得挺好,可以带着问题去读源码,比如:



在解决问题的过程中也就对源码更熟悉了。


还有一点要注意的就是,先看整体,再看细节。


在这里推荐给大家一个工具,这个工具可以帮我们梳理出代码的整体结构,我觉得还是挺有用的。是一个开源项目:


项目地址:github.com/jfeliu007/g…


这个项目可以分析一个 Go 项目,然后生成接口和结构体的 UML 图。有了这个图之后,基本上也就对项目整体关系有了一个基本概念,再读代码的话,相对来说会容易一些。

项目具体怎么用我倒是没仔细研究,因为老哥非常贴心的写了一个 WEB 页面:


网站链接:www.dumels.com/


dumels-1.png


使用起来很方便,首先在页面最上方输入框输入项目地址,然后在左侧输入要分析的代码目录就可以了。默认生成的图中会包括 Fields 和 Methods。


填写好信息之后就可以生成 UML 图了。比如我输入的 src/sync,就得到了下面这张图,有了这张图,对代码结构之间的关系就更清晰了。


7326d6100e3a48679287325e17ed4c8c~tplv-k3u1fbpfcp-zoom-in-crop-mark 1304 0 0 0.png


还可以一次分析多个目录,多个目录用英文逗号分割。


如果不填写要分析的目录,则会分析整个项目,也可以选择是否要忽略某个目录。


友情提示一点,不要试图分析整个 Go 项目,可能是项目太大了,页面是不会给你返回的。


好了,本文就到这里了。你有什么好用的工具吗?欢迎给我留言交流。


目录
相关文章
|
7月前
|
测试技术 API 开发者
【Docker项目实战】在Docker环境下部署go-file文件分享工具
【2月更文挑战第15天】在Docker环境下部署go-file文件分享工具
175 1
|
7月前
|
网络协议 Linux Go
分享一个go开发的工具-SNMP Server
分享一个go开发的工具-SNMP Server
161 0
|
1月前
|
JSON 监控 安全
go语言选择合适的工具和库
【10月更文挑战第17天】
14 2
|
4月前
|
Shell Go
Go 语言Air 工具使用入门
在Go开发中,频繁的手动重启应用以加载新代码既耗时又低效。为此,我们引入了Air——一款专为Go项目设计的自动重载工具。Air通过监听文件变化,实现代码更改后的自动编译与运行,极大提升了开发效率。本文将指导你完成Air的安装与配置,包括如何启动Air、忽略临时文件以及理解其工作原理,让Go项目开发更加流畅高效。
|
4月前
|
Kubernetes 数据可视化 Java
|
4月前
|
关系型数据库 MySQL Go
Go - 代码生成工具
Go - 代码生成工具
41 3
|
4月前
|
算法 测试技术 Go
|
4月前
|
JSON Go 数据格式
Go - 使用工具生成易读的 Protocol 文档
Go - 使用工具生成易读的 Protocol 文档
28 1
|
4月前
|
编译器 Go
Go语言中的闭包:封装数据与功能的强大工具
Go语言中的闭包:封装数据与功能的强大工具
|
4月前
|
Java Go PHP
Go - 关于 protoc 工具的小疑惑
Go - 关于 protoc 工具的小疑惑
29 0