最后,这个问题肯定要看个人喜好了。尽管如此,我还是想大胆尝试找出哪种风格是首选。我最近注意到我的代码中存在不一致之处。我有一个包含一些字段的结构。现在的问题是当我需要调用一个函数来获取我想要设置的值时,编辑这个字段的惯用方法是什么。我是在函数内部设置值,还是返回它并在我的调用函数中设置它?type SuperStruct struct { OneValue string AnotherValue string}func (s *SuperStruct) makeAnotherValue() { s.AnotherValue = "Hello there"}func main() { superStruct := SuperStruct{} superStruct.makeAnotherValue()}或(具有相同的结构)func (s *SuperStruct) makeAnotherValue() string { return "Hello there"}func main() { superStruct := SuperStruct{} superStruct.AnotherValue = superStruct.makeAnotherValue()}我知道在某些情况下,这些方法中只有一种是有意义的。但我经常发现自己处于两者皆有可能的境地。我想第二种方式可以提供更好的保护,但有时这不是问题。
1 回答
泛舟湖上清波郎朗
TA贡献1818条经验 获得超3个赞
我认为惯用的方法是完全删除您的功能:
func main() {
superStruct := SuperStruct{AnotherValue:"Hello there"}
}
或者
func main() {
superStruct := SuperStruct{}
...
superStruct.AnotherValue = "Hello there"
}
除非绝对必要,否则不要构建 getters/setters/create 函数,只做需要的工作。如果你只是设置一个简单的字段,在大多数情况下你不需要工厂来制作字段值。如果您认为该函数是必要的,它需要比这复杂得多(至少几行)并且通常被称为 NewAnotherValue 并且不附加到父结构。
通过另一个函数/结构的每个间接访问都会使代码更难理解。
- 1 回答
- 0 关注
- 91 浏览
添加回答
举报
0/150
提交
取消