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 包定义了一个结构体,其中包含我的二叉堆实现。我应该如何命名这个结构体:
ClientBinaryHeapSlice<- 表明我使用底层切片实现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
这个函数可以命名为 DropNils。
更多关于Golang中如何命名:binaryheap.Client VS binaryheap.Binary VS binaryheap.Slice VS binaryheap.Tree的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
你是否定义了一个接口来描述二叉堆的行为?这个接口叫什么名字?
实际实现这个接口的结构体名称可以告诉读者它是如何实现的。所以 binaryheap.Slice 和 binaryheap.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的命名习惯,也能让其他开发者快速理解代码的意图。

