Abstract: | Some consider unmaintainable code a tool that provides job security. At the low level, you can obtain such code through incorrect or inconsistent formatting, naming, and commenting. Complex and gratuitous coupling, lack of assertions, and failure to use a language's type system can further complicate the picture. At a higher level, deep and wide class hierarchies, lack of cohesion, and unhelpful package relationships can hinder maintainability. Finally, at the development process level, lack of version control, subpar build-and-release procedures, a lacking testing infrastructure, and the hiring of mediocre developers will hammer the last nails into a project's maintainability coffin. |