Guiding Principles
The following considerations should be applied when determining a naming standard:
Consideration | Description |
---|---|
Cognitive Load | All efforts should be made to reduce cognitive load. Unnecessary Abbreviations , Indirection , inconsistencies,
and foreignness increase cognitive load, and decreases productivity. |
Qualification | Almost every resource should have a qualifier, easily identifying what it is at first glance and ensuring it isn't
over-broadly squatting on a concept name. As an example, having a repository called 'reporting' is a poor choice. Is it the reporting service code, the reporting database schema, a bunch of statically generated reports? Note that qualification can come from Contextuality . |
Consistency | Identify lowest common denominators where a standard will be applied, and ensure the standard can be implemented
consistently in all locations. When a standard has been identified, efforts should be made to apply it in all new contexts, and retrofit existing contexts as feasible. |
Uniqueness | Determine uniqueness requirements for a given context, and ensure a naming standard meets them. |
Contextuality | Can a Resources be uniquely identified within a context, without unnecessary qualifiers? |
Succinctness | Names should be no longer than necessary to meet objectives, without compromising on other considerations. |
Familiarity | Someone reading a name should be able to reasonably understand what it's meaning is, or what it applies to, because it is immediately a common, familiar concept they have likely seen before. |
Automation | Ensure naming standards aid in automation, and do not create unnecessary burden on automation implementors. As an example, would an implementor need to make addition API calls or take additional steps to resolve a resource name due to a shortcoming with a naming standard? |
Discoverability | Naming standards should have a certain element of "guess-ability". This goes hand in hand with 'consistency'. Someone trying to access a resource should have a reasonable chance of guessing the naming scheme applied to a resource because it follows the same patterns used on other types resources. |
Limitations | Ensure naming standards are not compromised based on naming lengths and allowed characters withing a resource context. If there are limitations that might compromise the value of a naming standard, strong considerations should be made to apply other considerations. For example, if there is name length restriction, it is better to determine if the name can be shortened by removing unnecessary qualifiers instead of using abbreviations. |
Sorting/Searching | A naming standard should aid in sorting and/or searching where appropriate. |
Refactor-ability | A naming standard should take into consideration what happens if a name change needs to be made, and the blast radius should a name change be required. |