最后,這個(gè)問題肯定要看個(gè)人喜好了。盡管如此,我還是想大膽嘗試找出哪種風(fēng)格是首選。我最近注意到我的代碼中存在不一致之處。我有一個(gè)包含一些字段的結(jié)構(gòu)?,F(xiàn)在的問題是當(dāng)我需要調(diào)用一個(gè)函數(shù)來獲取我想要設(shè)置的值時(shí),編輯這個(gè)字段的慣用方法是什么。我是在函數(shù)內(nèi)部設(shè)置值,還是返回它并在我的調(diào)用函數(shù)中設(shè)置它?type SuperStruct struct { OneValue string AnotherValue string}func (s *SuperStruct) makeAnotherValue() { s.AnotherValue = "Hello there"}func main() { superStruct := SuperStruct{} superStruct.makeAnotherValue()}或(具有相同的結(jié)構(gòu))func (s *SuperStruct) makeAnotherValue() string { return "Hello there"}func main() { superStruct := SuperStruct{} superStruct.AnotherValue = superStruct.makeAnotherValue()}我知道在某些情況下,這些方法中只有一種是有意義的。但我經(jīng)常發(fā)現(xiàn)自己處于兩者皆有可能的境地。我想第二種方式可以提供更好的保護(hù),但有時(shí)這不是問題。
1 回答

泛舟湖上清波郎朗
TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超3個(gè)贊
我認(rèn)為慣用的方法是完全刪除您的功能:
func main() {
superStruct := SuperStruct{AnotherValue:"Hello there"}
}
或者
func main() {
superStruct := SuperStruct{}
...
superStruct.AnotherValue = "Hello there"
}
除非絕對(duì)必要,否則不要構(gòu)建 getters/setters/create 函數(shù),只做需要的工作。如果你只是設(shè)置一個(gè)簡單的字段,在大多數(shù)情況下你不需要工廠來制作字段值。如果您認(rèn)為該函數(shù)是必要的,它需要比這復(fù)雜得多(至少幾行)并且通常被稱為 NewAnotherValue 并且不附加到父結(jié)構(gòu)。
通過另一個(gè)函數(shù)/結(jié)構(gòu)的每個(gè)間接訪問都會(huì)使代碼更難理解。
- 1 回答
- 0 關(guān)注
- 126 瀏覽
添加回答
舉報(bào)
0/150
提交
取消