In this chapter, we introduced a small service that is in pretty rough shape. We are going to improve this service with a series of refactorings as we explore the many DI techniques. In the following chapters, we will tackle the problems we have outlined in this chapter by applying the different DI techniques available in Go.
For each different technique, keep in mind the code smells, the SOLID principles, the code UX, and all the other ideas we discussed in part 1. Also, remember to bring along your inner skeptic.
Always ask yourself, what does this technique achieve? How does this technique make the code better/worse? How could you apply this technique to improve other code that belongs to you?