I'll say that :
- everything being in the main is bad
- the handler structure can be better done, more structured and separating the http part, from the real business part (some interfaces may help)
- rclient should be injected.
- there is no env variable management
- there is no unit tests (that one you know)
- there is no metrics (if it was a professional project I 'll be waiting for those)
I'll say that :
- everything being in the main is bad
- the handler structure can be better done, more structured and separating the http part, from the real business part (some interfaces may help)
- rclient should be injected.
- there is no env variable management / config management (viper is good for that)
- there is no unit tests (that one you know)
- there is no metrics (if it was a professional project I 'll be waiting for those)
- gitignore should maybe have golang-webapp on it.
I'll say that :
- everything being in the main is bad
- the handler structure can be better, more structured and separating the http part, from the real business part (some interfaces may help)
- rclient should be injected.
- there is no env variable management / config management (viper is good for that)
- there is no unit tests (that one you know)
- there is no metrics (if it was a professional project I 'll be waiting for those)
- gitignore should maybe have golang-webapp on it.
yarnd
😅
yarnd
😅
1. I'm sure
go fmt
would add a space after the comment marker //
.2. Go doc strings are supposed to start with the name of the variable etc (I'm not a fan of this, either).
3. Sometimes
log.SetPrefix(…)
ends with a space, sometimes not.4. Some messages start capital, some don't.
5. Typo:
occurred
with double r
.6. On lots of errors no appropriate status code is set.
7. Some
err
can be scoped in the if
like that: if err := foo(); err != nil { … }
8. The
<title>
s could be improved.9. I have no idea about redis, but
rclient.Set("user:"+username, …)
looks suspicious to me and reminds me of SQL injections.10.
o
cookie, err := r.Cookie("session_token")
if err != nil {
if err == http.ErrNoCookie { … return }
}
doesn't look complete. Also handle other errors? Or simplify without nil check.