Today I want to share with you my impressions about them - using lazy-loading should be treated as a code smell!
Let me explain myself:
- Lazy-loading means that sometimes you won’t need some attributes of an object. Those attributes will be necessary in a different context. Doesn’t it mean that you are building different objects depending on context?
- The functionality that is using this object knows definitely too much. It knows the API of the object and this API contains also the methods that require attributes which were not loaded. Great, isn’t it?
- You have to remember what is needed in each place and what is not needed …
- … and, what is even worse, you have to remember what you may use and what methods are not supported in a particular place.