Is it definitely a good practice to use it? What are some possible situations in a project that need reflection?