- 
                Notifications
    
You must be signed in to change notification settings  - Fork 9.7k
 
Naming Guidelines
        Rushabh Mehta edited this page Dec 21, 2023 
        ·
        6 revisions
      
    Naming something is probably the most important decisions that you need to take as a user. Here are some guidelines will selecting names
"To change this rock into a jewel, you must change its true name. And to do that, my son, even to so small a scrap of the world, is to change the world" - Wizard of Earthsea
- Naming should be something that is used in common language. There are legacy ERP systems that have a specific naming style, we should constantly keep away from those styles, going with a more simple naming style. Shopify is a great example of how to name things. For example, in legacy ERP systems, a Purchase Receipt is called as "Goods Receipt Note".
 - Names should represent the essence of the concepts they represent and avoid accounting/management jargon.
 - Names should be consistent with the rest of the system.
 - No abbreviations. Use complete names as far as possible in both object and variable naming.
 
DocType names must be:
- Title Case
 - Singular
 - Names with multiple words should be separated by a space. Example "Sales Invoice"
 - US English
 - Child table names should be parent table names + the relation, for example, "Sales Order Item"
 
- Labels must be sentence case (except links)
 - Link names must be same as the DocType they refer to (for example Link to "Employee" should be 
employee) - Table field names must be plural and just be the relation, for example, field name for "Sales Order Item" should be 
items - Field name must be the slugged version of the label ("First Name" must be 
first_name) - Avoid descriptions. Labels must be as clear as possible.
 - Use full names (not abbreviations)
 
- Variables representing Document objects must be slugged versions of the DocType [example: 
sales_order = frappe.get_doc('Sales Order', 'SO-0001')] - Variables representing names, should be suffixed with 
_name[example:sales_order_name] - Child table in a loop can be 
d[example:for d in sales_order.items] - Avoid using numbered variables, like 
i1, i2etc. Use descriptive variables. 
Note: Title Case means to capitalize every word except articles (a, an, the), coordinating conjunctions (and, or, but), and (short) prepositions (in, on, for, up, etc.).