Changing function signatures and data types when upgrading canister

What are the limitations of reusing variable/function names but changing their types/signature? I think I’m running into some bugs where it stems from some change where I may have changed the data type of variables without properly using the preupgrade/postupgrade hooks.

I think once dfx 0.8.5 is released and moc gets upgraded past 0.6.14 (it’s currently stuck at 0.6.11 for dfx 0.8.4), then moc will tell you if your canister upgrade is safe or not.