Junior — Middle
What are the advantages and disadvantages of defining an interface directly where it is used?
sobes.tech AI
Answer from AI
Defining interfaces directly where they are used in Go has its pros and cons.
Advantages:
- Simplifies code: The interface describes only the methods that are actually needed in a specific place, making the code more understandable and minimalist.
- Flexibility: Allows easy swapping of implementations without forcing the entire application to depend on a large interface.
- Improves testability: Easier to create mock objects for small interfaces.
Disadvantages:
- Code duplication: If the same interface is needed in multiple places, it will have to be duplicated.
- Loss of overall abstraction: The absence of a unified interface can make understanding the overall architecture more difficult.
Example:
// Interface defined directly in the function
func process(r io.Reader) {
// only using Read
}
Here, the interface is minimal and local, which is convenient.