Probably the best advice I can give is to keep your code modular. For example, if you're working in Unity limit your scripts to specific behaviors; ie: individual scripts for moving, aiming, inventory, and whatever other abilities a character might have. This way you can quickly add or remove features, and edit mechanics individually rather than risk breaking your one character controller.