包命名
好的包名让客户的使用更加容易,在添加新功能或者修改bug时能够快速定位代码。
一、命名原则
包名应简短清晰,所有字母均小写,禁止使用下划线,例如:
time (提供即使和显示时间的功能) list (链表实现)
包名在适当时应以开发者熟悉的方式进行缩写,例如:
strconv (字符串转换) syscall (系统调用) fmt (格式化I/O)
避免使用常用变量名作为包名,例如不要使用
buf
作为缓冲式I/O的包名,而要使用bufio
。
二、包中内容定义原则
避免重复定义,例如在
http
包中定义struct Server
,无需定义为HTTPServer
,因为用户在使用时是http.Server
,非常清晰。如果函数返回与包名相同的值,那么函数名中间无需带有提示返回值类型的单词。
//bad usage t, err := time.ParseTime(time.Kitchen, "6:06PM") // t is a time.Time d, err := time.Parse("10s") // d is a time.Duration //good usage t, err := time.Parse(time.Kitchen, "6:06PM") // t is a time.Time d, err := time.ParseDuration("10s") // d is a time.Duration
三、不正确的包命名
使用无明确意义的包名,例如
util
、common
等。应使用分包的方式将无意义命名包中的内容进行拆解,参考golang分包。
Last updated
Was this helpful?