gpt4 book ai didi

go - 什么时候重用函数?

转载 作者:IT王子 更新时间:2023-10-29 01:36:28 26 4
gpt4 key购买 nike

我的程序中有一个生成随机字符串的函数。

func randString(s []rune, l int) string

s 是一段包含字符串中可能字符的 rune 。我通过在大写和小写字母字符的 rune 片中。 确定字符串的长度。这很好用。但我也需要为 html 颜色代码生成随机十六进制字符串。

似乎所有消息来源都说重用代码是良好的编程习惯。所以我制作了另一个包含 [1-9a-f][]rune 并将其输入到 randString 中。那在我意识到 stdlib 已经包含 int 的格式化动词之前非常适合我的类型。

在实践中,重用我的 randString 函数还是单独编写代码更好?(更有效)功能?我会生成一个随机 int 和 Sprintf 它而不是像 randString 那样循环并生成 6 个随机整数。

最佳答案

1) 如果标准库中有精确解,你应该总是选择使用它。

因为:

  • 标准库已经过测试。所以它按照它说的去做(或者我们期望它做的)。即使其中存在错误,它也会(由您或其他人)发现,并且无需您的工作/努力即可修复。
  • 标准库是用地道的 Go 编写的。与您可以编写的解决方案相比,即使它做的比您需要的多一点,它也有可能更快。
  • 标准库正在(或可能)随着时间的推移而改进。您的程序可能会变得更快,因为新的 Go 版本中的实现得到了改进,而无需您付出任何努力。
  • 已提供解决方案(这意味着它已准备就绪,不需要您花时间)。
  • 标准库广为人知,因此您的代码以后会更容易被他人和您理解。
  • 如果您已经导入了包(或在不久的将来),这意味着零开销或最小开销,因为库是静态链接的,所以您需要的函数已经链接到您的程序(编译的可执行二进制文件) .

2) 如果标准库提供了解决方案,但它是对类似问题的通用解决方案和/或提供的内容超出您的需要:

  • 这意味着它很可能不是您的最佳解决方案,因为它可能会像您的解决方案那样使用更多内存和/或工作得更慢。
  • 您需要决定是否愿意为上面列出的 yield 牺牲一点性能损失。这也取决于您需要使用它的方式和次数(例如,如果它是一次性的,那应该无关紧要,如果它处于无限循环中,非常频繁地调用它,则应该仔细检查)。

3) 另一方面:你应该避免使用标准库提供的解决方案,如果它不是为解决你的问题而设计的......

  • 如果恰好它的“副作用”解决了你的问题:即使当前的实现是可以接受的,但如果它是为其他东西而设计的, future 对它的改进可能会使你对它的使用完全无用,甚至可能打破它。
  • 更不用说它会让其他试图阅读、改进或使用您的代码的开发人员感到困惑(在一定时间后,您也包括在内)。

附带说明:这个问题正是关于您要创建的函数:How to generate a random string of a fixed length in golang?我已经提出了多种非常有效的解决方案。

关于go - 什么时候重用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31796251/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com