包命名

好的包名让客户的使用更加容易,在添加新功能或者修改bug时能够快速定位代码。

一、命名原则

  1. 包名应简短清晰,所有字母均小写,禁止使用下划线,例如:

     time (提供即使和显示时间的功能)
     list (链表实现)
  2. 包名在适当时应以开发者熟悉的方式进行缩写,例如:

     strconv (字符串转换)
     syscall (系统调用)
     fmt (格式化I/O)
  3. 避免使用常用变量名作为包名,例如不要使用buf作为缓冲式I/O的包名,而要使用bufio

二、包中内容定义原则

  1. 避免重复定义,例如在http包中定义struct Server,无需定义为HTTPServer,因为用户在使用时是http.Server,非常清晰。

  2. 如果函数返回与包名相同的值,那么函数名中间无需带有提示返回值类型的单词。

     //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

三、不正确的包命名

  1. 使用无明确意义的包名,例如utilcommon等。应使用分包的方式将无意义命名包中的内容进行拆解,参考golang分包

Last updated

Was this helpful?