Commit 693642f
authored
Remove gomnd from Golang CI (#3330)
Most developers agree that magic numbers are problematic. However, the
gomnd linter lacks finesse to understand when magic numbers aren't magic
at all. Examining the context of where the number is used is often
enough to deem it non-magical.
Consider some common magic numbers flagged by gomnd: 0644, 8080. Without
any additional context, it's fairly likely these are a file mode and a
port number, respectively. It's even more obvious when presented with
the context:
```go
f, err := os.OpenFile("notes.txt", os.O_RDWR|os.O_CREATE, 0644)
```
The linter would flag this, even though it's completely obvious what
0644 is. The remediations for the linter's flag creates categorically
worse code. The most common learned behavior for developers facing this
linter is to simply constantize everything it flags:
```go
flags := 0644
f, err := os.OpenFile("notes.txt", os.O_RDWR|os.O_CREATE, flags)
```
This makes the code *harder* to read, since you now have to trace the
reference back (it's probably defined in some const block another file
away).
Option number two for remediating this is to drop a comment providing
literally zero information to the reader that they don't already have or
could get from the documentation of the function where it's used.
```go
//nolint:gomnd // 0644 is a file mode
f, err := os.OpenFile("notes.txt", os.O_RDWR|os.O_CREATE, 0644)
```
This is not to say that magic numbers are not a problem--they definitely
are. However, this tool has very low signal-to-noise ratio and causes
people to take action that makes the codebase worse just to silence it.
Reviewers understand when a magic number is confusing and can just flag
it by hand more reliably.1 parent d25da63 commit 693642f
1 file changed
+0
-1
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
21 | | - | |
22 | 21 | | |
23 | 22 | | |
24 | 23 | | |
| |||
0 commit comments