如何选择" updateSomething"和" setSomething"何时命名成员方法?

时间:2014-10-21 09:01:26

标签: go naming-conventions

当我命名一个功能已设置/更新状态为setSth的方法时,我发现代码中至少出现了三个updateSthupdateSththis对象

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

  • 0项使用“changeSth”

  • 使用“updateSth”的8个项目

    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) {
    
  • 使用“setSth”的214项

      

    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(边界字符串)错误{log / log.go:218:func(l * Logger)

         

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

         

    string){bufio / scan.go:198:func(s * Scanner)setErr(错误错误){

         

    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)设置(x,y int,c color.Color){

1 个答案:

答案 0 :(得分:3)

密钥保持一致:

  • 当您开始使用" UpdateXXX()"在一个包中,坚持下去。
  • 如果您使用的是SetXXX()

话虽如此,GetSet在Go中并不惯用。当然not for a Getter,如果需要,可以使用setter函数调用SetXXX(),如" how to set and get fields in golang structs?"。 另一方面,Update()可能有特定目的。

注意:没有" update()"您在go源中找到的方法将被导出(公共)。