【问题标题】:Rename public to private with gofmt使用 gofmt 将公共重命名为私有
【发布时间】:2022-08-12 04:03:59
【问题描述】:

我正在清理别人的代码,所以我想删除未使用的函数。我试过这个:

staticcheck

但它只找到未使用的私有函数。所以我想也许我可以将所有内容编辑为私密。我试过这个:

gofmt -w -r \'SomeFunction -> someFunction\' *.go

但这仅适用于一种功能。是否可以将所有公共函数重命名为私有函数?

  • 这是没有意义的。 Go 可以通过查看模块来判断哪些“私有”方法未被使用,因为根据定义,这些方法不能在模块外部使用。如果你做全部方法私有,而不是整个模块根据定义没用的和每一个方法将不被使用。您无法判断您担心的公共方法是否与静态代码分析一起使用,因为这些功能的用户居住在您的代码库之外,这就是公共方法为了.
  • @user229044 我只会导出一个函数,所以我会知道忽略该函数的删除建议。清理完所有内容后,我可以再次导出
  • 为什么不只列出一个包中所有导出符号的列表,然后 grep 应该使用它们的代码?如果未使用某个符号,则它可能是取消导出的候选对象。实际上,所述问题听起来很奇怪:是代码糟糕的是那种出口的一切?我的意思是,在任何明智的代码库中,导出什么和不导出什么都不是一个决定机械地。
  • 一个小问题:您是否考虑过制作有问题的包裹internal?该功能从另一个角度解决了“过度导出”的问题。
  • @kostix 我从另一个包开始。我只需要一个导出的函数,以及它所依赖的任何内部函数。

标签: go


【解决方案1】:

要获取导出符号的列表,您可以使用go doc that/package。要在一次调用中同时获得每种类型的所有导出方法,请使用 go doc -all that/package

然后,您可以将结果存储在一个文件中并对其进行编辑,或者添加一些脚本 fu 来提取您想要的名称。

由此,您可以生成一个脚本来替换您想要的符号。

【讨论】:

  • 谢谢,但我不明白这如何解决问题。我不需要导出符号的列表。我需要一个未使用符号的列表,或取消导出所有内容的方法
  • @three,然后您可以遍历该列表,在每个列表上运行您的 gofmt encantation。我的意思是,它可以编写脚本。
  • @three:正如kostix所说,我建议作为一种快速破解来应用您的“取消导出并检查报告为未使用的内容”技巧。否则:那个包裹有那么大吗?另一种方法是简单地删除一些代码,看看编译器是否抱怨。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-09
  • 2021-05-01
  • 2015-06-03
  • 1970-01-01
  • 1970-01-01
  • 2014-09-21
  • 2016-10-18
相关资源
最近更新 更多