命名成员方法时,如何在“updateSomething”和“setSomething”之间进行选择?

我找到了至少三个 world setSth,updateSth并且updateSth在我命名其功能设置/更新this对象状态的方法时出现在我的代码中。


我很困惑这个选择。我搜索了 golang 项目的源代码,发现有很多使用setSth.


0 项使用“changeSth”


8 项使用“updateSth”


text/tabwriter/tabwriter.go

380:func (b *Writer) updateWidth() {

go/ast/commentmap.go

246:func (cmap CommentMap) Update(old, new Node) Node {


container/heap/example_pq_test.go

54:func (pq *PriorityQueue) update(item *Item, value string, priority int) {


expvar/expvar.go

129:func (v *Map) updateKeys() {


encoding/gob/encode.go

101:func (state *encoderState) update(instr *encInstr) {


crypto/cipher/gcm.go

236:func (g *gcm) updateBlocks(y *gcmFieldElement, blocks []byte) {

247:func (g *gcm) update(y *gcmFieldElement, data []byte) {


index/suffixarray/qsufsort.go

145:func (x *suffixSortable) updateGroups(offset int) {

214 项使用“setSth”


net/fd_plan9.go:214:func (fd *netFD) setReadDeadline(t time.Time)


错误 { net/fd_plan9.go:218:func (fd *netFD) setWriteDeadline(t


time.Time) 错误 { mime/multipart/writer.go:43:func (w *Writer)


SetBoundary(boundary string) error { log/log.go:218:func (l *Logger)


SetFlags(flag int) { log/log.go:232:func (l *Logger) SetPrefix(prefix


字符串) { bufio/scan.go:198:func (s *Scanner) setErr(err error) {


archive/zip/struct.go:185:func (h *FileHeader) SetModTime(t time.Time)


{ archive/zip/struct.go:223:func (h *FileHeader) SetMode(mode


os.FileMode) { expvar/expvar.go:60:func (v *Int) Set(value int64) {


expvar/expvar.go:86:func (v *Float) Set(value float64) {


expvar/expvar.go:147:func (v *Map) Set(key string, av Var) {


expvar/expvar.go:228:func (v *String) Set(value string) {


testing/benchmark.go:97:func (b *B) SetBytes(n int64) { b.bytes = n }


testing/benchmark.go:430:func (b *B) SetParallelism(p int) {


image/image.go:92:func (p *RGBA) Set(x, y int, c color.Color) {


image/image.go:104:func (p *RGBA) SetRGBA(x, y int, c color.RGBA) {


image/image.go:196:func (p *RGBA64) Set(x, y int, c color.Color) {


慕的地10843
浏览 172回答 1
1回答

HUH函数

关键仍然是一致性:当您开始UpdateXXX()在包中使用“ ”时,请坚持使用。如果您使用SetXXX().话虽这么说,Get而Set不是去习惯。当然不是 Getter,而如果需要,可能会调用 setter 函数,如SetXXX()“如何设置和获取 golang 结构中的字段? ”。Update(),另一方面,可能有特定的目的。注意:update()您在 go 源代码中找到的任何“ ”方法都不会导出(公共)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go