I’m going to disagree with cookbooks view on`uvm_do. If you know what it does it is a very useful little function that completely encapsulates the generation and randomization of sequence_items.
You need to be aware of the sequence / sequence_item you are randomizing with `uvm_do_with. It does work very well but you need to aware of scope.