Hey!
"
Is this the recommend way to do this or..?"
Assassins creed protocol states: "
Nothing is true, everything is permitted".
I usualy use RET X, to clean up stack.
But cleaning stack after function call, can be usable too,
for example, like pointers, or vectors, require more operations on the same parameters.
Lets say, push vector, call function vector.normalize, then dont push again, just call next funtion on the same stack parameters, the same vector, like dot product or else.
Cleaning stack after function call, those stack entries could server as a place holders.
MAYBE.
Worst case scenario, would be if you forget about cleaning stack generaly, ... w...what? why do i need to clean stack.