November 2018
Intermediate to advanced
346 pages
8h 12m
English
A long constructor parameter list is perhaps the most common and most often complained about code damage caused by DI. While DI is not the root cause of code damage, it certainly doesn't help.
Consider the following example, which uses constructor injection:
func NewMyHandler(logger Logger, stats Instrumentation, parser Parser, formatter Formatter, limiter RateLimiter, cache Cache, db Datastore) *MyHandler { return &MyHandler{ // code removed }}// MyHandler does something fantastictype MyHandler struct { // code removed}func (m *MyHandler) ServeHTTP(response http.ResponseWriter, request *http.Request) { // code removed}
The constructor simply has too many parameters. This makes it unwieldy to use, test, ...
Read now
Unlock full access