OOPS and UVM

In reply to verif_learner:

Going into UVM base class library we would know how each OOP principal is used for different purpose, which I did not try my myself.

An OOP principal I liked is SRP(Single Responsibility Principal) as I’ve seen enough of testbenches where user adds all the responsibility to a single class which is sometimes harder to debug/reuse.

However I would like to know other practices that an user follows when creating testbench either keeping re-usability in mind or for ease of debug!