Building Maintainable Software, Java Edition: Ten Guidelines for Future-Proof Code