mat*_*t.s 3 code-generation naming-conventions go
我正在生成一个 Go 文件(包括构建版本等常量),以便这些常量可以在其他包中使用。我创建了一个小工具来创建文件,go generate但我正在尝试想一个合适的名称,以便
很明显它是生成的,所以如果它丢失(在构建时),用户就会知道运行go generate
然后我可以将文件添加到 .gitignore
我的第一个猜测是这样的version_GENERATED.go
我应该注意哪些约定或更好的建议?
在文件名中添加像这样的后缀_GENERATED在生成文件之前不会保留任何信息,因为编译器只会给您“不相关”的错误,例如"undefined: xxx"(编译器不会猜测如果标识符存在,它将在version_GENERATED.go)。
例如,stringer生成器生成具有名称的文件type_string.go,其中类型被替换为其生成的类型的名称。
所以我认为简单地遵循文件名的一般准则就足够了,除了使用_gen或_generated后缀。或者,如果您的工具是公共的并且也被其他人使用,则使用该工具的名称作为后缀(就像stringer这样做)。
如果您确实希望用户在生成器尚未运行时收到一条多言的错误消息,则生成器可能会生成一个导出的常量,如果错误消息中包含其名称,则该常量的名称是多言的,例如:
const MustRunStringerGenerator = 0
Run Code Online (Sandbox Code Playgroud)
在你的程序中像这样引用它:
var _ = MustRunStringerGenerator // Test if stringer has been run
Run Code Online (Sandbox Code Playgroud)
如果stringer尚未运行,您将看到一条错误消息:
undefined: MustRunStringerGenerator
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
886 次 |
| 最近记录: |