Wandering Thoughts archives

2016-12-23

Why the gosimple program is great

Gosimple is a linter for Go source that specializes in simplifying your code, written by Dominik Honnef (to more or less quote from its Github description). The sorts of simplifications that gosimple suggests are things like using time.Since(t) instead of time.Now().Sub(t) or replacing a loop of:

for _, iname := range thing.members() {
    exlist = append(exlist, iname)
}

With the better append usage of 'exlist = append(exlist, ni.members()...)'.

At one level these are obvious simplifications, the kind of thing that a skilled Go programmer should be automatically writing that way in the first place without prompting. Perversely, that's exactly why I love gosimple.

You see, I'm not a skilled Go programmer, not in this sense. I don't write Go code every day, so all of these idioms and features of the standard library don't necessarily stay on the top of my mind to be used when I'm writing or changing code. Sometimes I write straightforward brute force code because that's the idiom I can remember right now. That's where gosimple comes in. Because it's a program, it unerringly remembers all of these idioms and features, even if and when I (a fallible squishy human) overlook them. It'd be better for me to write the idiomatic code in the first place, but I can't always manage that. Gosimple helps get me to idiomatic code in the end.

(It also simply brings these idioms to my attention, which makes it slightly more likely that I'll remember them the next time around.)

I'm all for automated backups to my fallible mind, so I think gosimple is great. As a bonus, it will also help cover changes in the standard library since I last looked at a given package in detail, which does happen sometimes.

(There's also 'gofmt -s', which I try to remember to run over my code every so often. Dominik Honnef has additional Go tools that are worth looking at, like staticcheck and unused.)

programming/GosimpleWhyGreat written at 01:41:39; Add Comment


Page tools: See As Normal.
Search:
Login: Password:
Atom Syndication: Recent Pages, Recent Comments.

This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.