A quick post to share some thoughts on the standardisation of naming conventions applied to Custom Settings. With Custom Objects it is an obvious best practice to mirror exactly the conventions applied by the Standard Objects, there are no reasons not to adhere to this approach, none. With Custom Settings however there is no comparable reference and as such a great deal of variation exists in the naming conventions applied. For many, this matters little, however I’d make the usual arguments about maintenance, readability, build quality through predictable convention and so forth. There’s also merit in clearly distinguishing Hierarchy from List types and ensuring a meaningful naming for the latter, which can be utilised across many declarative build elements.
I use the naming conventions defined below, for simplicity and clarity reasons. All that really matters is that a standardised approach is taken.
1. Custom Setting Label – Pluralised in all cases (e.g. Data Sources). No “Setting[s]” suffix.
2. API Name - List Settings
- [Data entity that each list entry represents]ListSetting__c
Each record represents an individual entry and as such singular naming is applied, as per objects.
Examples – List
e.g. Analytic Views – AnalyticViewListSetting__c
e.g. Data Sources – DataSourceListSetting__c
3. API Name - Hierarchy Settings
- [Function of the settings]Settings__c
Each record represents the same set of settings applied at different levels. In concept this differs from objects and list settings, the plural naming reflects this.
Examples – Hierarchy
e.g. Org Behaviour Settings – OrgBehaviourSettings__c
e.g. My App Settings – MyApplicationSettings__c
As a further best practice, it is important that any requisite logic applied to the population of the Name field is described in the Custom Setting Description field. If the population is immaterial then simply state as such. Given the inability to relate settings at the attribute level, it can be the case that the Name field plays some role in grouping related settings.
Finally, where possible always retrieve Custom Settings data via the Custom Settings Methods – not via SOQL query. In the latter case the Application Cache is bypassed and the query counts against the limits context within the Apex transaction.