Golang中如何命名:binaryheap.Client VS binaryheap.Binary VS binaryheap.Slice VS binaryheap.Tree

Golang中如何命名:binaryheap.Client VS binaryheap.Binary VS binaryheap.Slice VS binaryheap.Tree 我已经实现了一个二叉堆数据结构,我的代码位于名为 binaryheap 的包中的 binary_heap.go 文件里 😊

这个 binaryheap 包定义了一个结构体,其中包含我的二叉堆实现。我应该如何命名这个结构体:

  • Client
  • Binary
  • Heap
  • Slice <- 表明我使用底层切片实现
  • Tree <- 表明我使用底层树实现

有什么建议吗?惯用的方式是什么?

附:另一个命名问题:我应该如何命名以下函数:

func FilterNils(input []MyInterface) []MyInterface

顾名思义,它接收一个元素切片,并返回另一个仅包含非 nil 元素的切片。


更多关于Golang中如何命名:binaryheap.Client VS binaryheap.Binary VS binaryheap.Slice VS binaryheap.Tree的实战教程也可以访问 https://www.itying.com/category-94-b0.html

3 回复

这个函数可以命名为 DropNils

更多关于Golang中如何命名:binaryheap.Client VS binaryheap.Binary VS binaryheap.Slice VS binaryheap.Tree的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


你是否定义了一个接口来描述二叉堆的行为?这个接口叫什么名字?

实际实现这个接口的结构体名称可以告诉读者它是如何实现的。所以 binaryheap.Slicebinaryheap.Tree 看起来不错。

在Go语言中,命名应当简洁且能准确反映类型的功能。对于你的二叉堆结构体,推荐使用 Heap。这个名称直接表明了它实现的是堆数据结构,符合Go的命名惯例,即类型名应当清晰地表达其用途。

示例代码:

package binaryheap

// Heap 表示一个二叉堆
type Heap struct {
    items []int
}

// NewHeap 创建一个新的堆
func NewHeap() *Heap {
    return &Heap{}
}

对于函数 FilterNils,其名称已经很好地描述了功能。在Go中,函数名通常采用动词+名词的形式,这里“Filter”是动词,“Nils”是名词,清晰表明了过滤nil元素的操作。

示例代码:

func FilterNils(input []MyInterface) []MyInterface {
    result := make([]MyInterface, 0, len(input))
    for _, v := range input {
        if v != nil {
            result = append(result, v)
        }
    }
    return result
}

使用 Heap 作为结构体名和 FilterNils 作为函数名,既符合Go的命名习惯,也能让其他开发者快速理解代码的意图。

回到顶部