# Package Names ![rw-book-cover](https://go.dev/doc/gopher/gopher5logo.jpg) ## Metadata - Author: [[Sameer Ajmani]] - Full Title: Package Names - Category: #articles - Summary: Go code is organized into packages, and good package names are short, clear, and descriptive. Effective package naming helps clients understand and use the code easily, and it plays a crucial role in code organization and maintenance. Avoid bad package names like util or common, and break up generic packages to improve clarity and maintainability. - URL: https://go.dev/blog/package-names ## Highlights - Go code is organized into packages. Within a package, code can refer to any identifier (name) defined within, while clients of the package may only reference the package’s exported types, functions, constants, and variables. Such references always include the package name as a prefix: `foo.Bar` refers to the exported name `Bar` in the imported package named `foo`. ([View Highlight](https://read.readwise.io/read/01kvkfwdv53s8gdh9y7tb8fd9w)) - Package names[¶](https://go.dev/blog/package-names/#package-names) Good package names are short and clear. They are lower case, with no `under_scores` or `mixedCaps`. They are often simple nouns, such as: • `time` (provides functionality for measuring and displaying time) • `list` (implements a doubly linked list) • `http` (provides HTTP client and server implementations) ([View Highlight](https://read.readwise.io/read/01kvkfy445pc2fyx9kwj8zn6x0)) - **Don’t steal good names from the user.** Avoid giving a package a name that is commonly used in client code. For example, the buffered I/O package is called `bufio`, not `buf`, since `buf` is a good variable name for a buffer. ([View Highlight](https://read.readwise.io/read/01kvkfz79z5yja5m7btn2jpdzt))