Is it definitely a good practice to use it?
What are some possible situations in a project that need reflection?
Reflection is just a way of investigating objects during run-time. You shouldn't use it if you don't need to do just that.