11:17 AM
Commenting doesn't help much. You'll just read comments instead of code. Sometimes comments can be clearer and express what cannot be expressed in code, but you get into issues of duplicating the logic in code and comments, causing maintenance hell.
What generally helps is having good abstractions. Mainly functions with clear names that do exactly what they are named so you can just use them without caring for how they work.
For example unit.die();
should just work and do the right things under the hood, like removing itself at the correct time from the correct places. If you need to know how to safely remove a unit then that is bad as you forget that and also it can change, leaving you with maintenance hell again.