【问题标题】:Advantage/disadvantages of same name for multiple kind struct tags in a field字段中多种结构标签同名的优点/缺点
【发布时间】:2023-01-13 02:38:27
【问题描述】:
让我们举一些例子:
type Diff struct {
Foo interface{} `json:"name" env:"APP_NAME" firestore:"app_name" bson:"appName"`
}
type Same struct {
Foo interface{} `json:"name" env:"name" firestore:"name" bson:"name"`
}
Diff one 有哪些优点/缺点?我应该在他们之间使用什么?
【问题讨论】:
标签:
go
tags
marshalling
unmarshalling
【解决方案1】:
第一个示例 json:"name" env:"name" firestore:"name" bson:"name" 的主要优点在于它在不同系统中的命名约定是一致的。这可以使代码更简单、更易于阅读,因为字段名称在所有系统中都是相同的。如果你想让你的代码库更具可读性和可维护性,这会很有用。
第一个示例的主要缺点是它不允许不同系统使用不同的命名约定,这可能会导致命名冲突或难以与某些系统集成。
第二个例子,json:"name" env:"APP_NAME" firestore:"app_name" bson:"appName",允许不同的系统使用不同的命名约定,这对于避免命名冲突或使其更容易与某些系统。但是,它会使代码更难阅读和理解,因为它需要开发人员跟踪多个不同的字段名称。
这取决于项目的要求,如果你想让你的代码库更具可读性和可维护性,你应该使用 json:"name" env:"name" firestore:"name" bson:"name"。如果你想避免命名冲突或更容易与某些系统集成,你应该使用 json:"name" env:"APP_NAME" firestore:"app_name" bson:"appName"。