Where possible, reduce scope of variables and constants. Do not reduce the scope if it conflicts with Reduce Nesting.
Bad | Good |
---|---|
err := os.WriteFile(name, data, 0644)
if err != nil {
return err
} |
if err := os.WriteFile(name, data, 0644); err != nil {
return err
} |
If you need a result of a function call outside of the if, then you should not try to reduce the scope.
Bad | Good |
---|---|
if data, err := os.ReadFile(name); err == nil {
err = cfg.Decode(data)
if err != nil {
return err
}
fmt.Println(cfg)
return nil
} else {
return err
} |
data, err := os.ReadFile(name)
if err != nil {
return err
}
if err := cfg.Decode(data); err != nil {
return err
}
fmt.Println(cfg)
return nil |
Constants do not need to be global unless they are used in multiple functions or files or are part of an external contract of the package.
Bad | Good |
---|---|
const (
_defaultPort = 8080
_defaultUser = "user"
)
func Bar() {
fmt.Println("Default port", _defaultPort)
} |
func Bar() {
const (
defaultPort = 8080
defaultUser = "user"
)
fmt.Println("Default port", defaultPort)
} |