Naming Things
Good naming makes code understandable, which in turn makes maintenance (including both enhancements and corrections) more efficient.
Good naming → Understandable code → Efficient maintenance
Codebases are knowledge bases. A codebase stores the knowledge of how an application should behave, and if the codebase is easy to understand, then software engineers can absorb that knowledge efficiently and modify the application easily, quickly, and confidently.
Studies show that maintenance consumes 60%-80% of software development life cycle costs. [8] Approximately 40%-60% of this effort is spent understanding the software that is being modified. [9] Thus, 25%-50% of life cycle time (the product of the previous numbers) is spent understanding the software.
Identifiers (names of classes, variables, functions, etc) account for roughly 70% of a codebase [10], so if these identifiers are easy to understand, then the codebase should have good understandability.
Studies about the influence of identifier names on comprehension, recall, and defect resolution time reflect this. Comprehension - The ability of a software engineer to understand the logic, structure, and purpose of the code. Recall - The ability of a software engineer to remember the logic, structure, and purpose of the code. Defect resolution time - The duration between when a software engineer starts working on a defect (a bug) and when they resolve the defect.
To choose a good name, an engineer must have developed experience with naming, have some domain experience, and take at least a small amount of time to choose the name. These are all costs, and if the value of a good name seems nebulous, then the logical decision is to not invest in naming. However, the value of good names is not nebulous. It has been studied and repeatedly proven to have short-term and long-term benefits.