Skip to content

Commit

Permalink
Merge pull request #49 from richzw/master
Browse files Browse the repository at this point in the history
Add tips 068
  • Loading branch information
smallnest authored Apr 20, 2024
2 parents 1b08182 + bffe5de commit 41d9a4b
Show file tree
Hide file tree
Showing 5 changed files with 42 additions and 1 deletion.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ Go tips from [Phuong Le](https://twitter.com/func25).
| 65 | Returning Pointers Made Easy with Generics | miniLCT |
| 66 | | |
| 67 | | |
| 68 | | |
| 68 | Use the deadcode tool to find and remove unused functions | richzw |
| 69 | Manage multiple goroutines with errgroup | richzw |
| 70 | | |
| 71 | sync.Pool, make it typed-safe with generics | QingyaFan |
Expand Down
40 changes: 40 additions & 0 deletions src/068.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Tip #68 使用deadcode工具来找到和删除无用的函数

> 原始链接:[ Golang Tip #68: Use the deadcode tool to find and remove unused functions](https://twitter.com/func25/status/1776223724913725925)
>
我们有时会有一些未使用的代码,我们称之为“死代码”。

这可能会让您在编写代码时感到困难,因为我们不确定是否可以删除它或更改它。

幸运的是,有一个名为`deadcode`的工具,可以帮助我们找到这些未使用的函数。我们可以使用以下命令进行安装:

![](./images/068/001.png)

我将其放在这里,以便您可以复制:`go install http://golang.org/x/tools/cmd/deadcode@latest`

然后,使用以下简短的命令运行它:

![](./images/068/002.png)

运行后,它将显示未使用的函数及其在代码中的位置。

如果您想知道为什么使用某个函数,我们可以使用 `-whylive` 标志,该工具将告诉我们该函数是如何连接其它代码。

根据我的经验,有时该工具可能不准确。因此,使用此工具来帮助您决定可以删除哪些代码。

其工作原理(简化):

- 该工具首先阅读所有代码,检查类型。

- 它将 `main()` 和任何 `init()` 标识为起始点。

- 从这些起始点开始,`deadcode` 查看直接调用的函数,它列出正在使用的函数。

- 然后,它检查通过接口间接调用的函数。

- 该工具跟踪转换为接口的任何类型,因为这些类型的方法可能会被间接调用。

- 在工具完成分析后,不在此列表中的任何函数都被视为“死代码”,这意味着该函数与主路径运行的代码没有连接。

您可以在此处阅读有关查找和删除死代码的更多信息:[https://go.dev/blog/deadcode](https://go.dev/blog/deadcode)
1 change: 1 addition & 0 deletions src/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
- [Tip #47 表驱动测试,测试集和并行运行测试](./047.md)
- [Tip #71 用泛型让 sync.Pool 类型安全](./071.md)
- [Tip #65 使用泛型返回指针](./065.md)
- [Tip #68 使用deadcode工具来找到和删除无用的函数](./068.md)
- [Tip #69 通过errgrup管理多个goroutine](./069.md)
- [Tip #73 用stringer工具给枚举类型实现String()方法](./073.md)
- [Tip #74 使 time.Duration 清晰易懂](./074.md)
Expand Down
Binary file added src/images/068/001.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/images/068/002.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 41d9a4b

Please sign in to comment.