Contact DDS
Naming Schemas Generally PDF Print E-mail

Before we can build a nice, consistent system, we need to know how to impose order and consistency from the ground up. The core of HotDocs is the humble variable, but dialogs are where we need to start our naming schema. Getting variables and dialogs "right" is the core of getting document assembly (and particularly HotDocs) "right". HotDocs contains a component manager which allows developers to view all the individual components of a system - so lets work with that.

HotDocs Component Manager

Many development platforms provide an interface of components or objects and HotDocs is no different. It provides us with an interface that can do many things - we can filter our list of components to show only a certain type (for example, only text type variables) and also an "on the fly" FIND filter (show me all components that contain the text "name"). The great thing about this is that if you have a system which contains hundreds (or thousands) of components, you can still utilize them efficiently - because you can show only those you are interested in. However, if you have not been consistent with naming variables, these features are far less beneficial than they should be.

A Few Big Things To Remember

  • Most development environments (including HotDocs) alphabetically sort components. Any naming schema you come up with should take advantage of that.
  • Most development environments can filter the list of components - show only a given variable type or filter for a specified piece of text. This means that any single word can be an "easy filter" - type in "Court" and see all court related variables. Type in "Addr " and see all variables that relate to an address of some kind.
  • When you are working with this stuff, you are most often going to want to find/use/view variables by the group they relate to. For example, you want to see all variables on the Plaintiff dialog, or all number variables that relate to the Loan. If you want to filter accurately, you need to consistently use a common word or letter sequence. So, all variables related to the loan might start with "LOAN " - that's a filter you can use.

Create a naming formula (schema) and stay with it

Or at least, stay with it until you are finished with the project you are currently working on. Our naming schema has been undergoing slight "improvements" and alterations for the last 7 years - each project we encounter raises something new, and something different is needed to annotate and track variables. So, we expand our naming schema to deal with this. Remember - the goal of a naming schema is to be readable by yourself at a glance and to be readable by a lawyer or other person, without them having to learn the language themselves. Sound like a tall order? It can be, but its not too difficult.

Regardless of how you approach this or what you end up with, the biggest goal is consistency. Be consistent. When you are being consistent, be consistent consistently. Yes, it sounds strange, but a key to good naming is being able to go to HotDocs, type in "Court" (for example) and see every variable and dialog that relates to Court information.  If you're not consistent, you cannot guarantee that, so you have two options: (1) Hope that you're looking at all Court related variables, or (2) Go looking "just to make sure", which voids the whole purpose of being consistent in the first place.

Warning - Opinions and Facts

How to name variables is a subject of hot debate for some. As with many debated topics, there is no 'right' answer, just points of view.

For those who have any interest, t he version I prefer and advocate is a formal and structured naming convention of my own (and Seth Rowland's) design. It has been a criticised as being a version of "Hungarian Notation" (which you can read about here: http://en.wikipedia.org/wiki/Hungarian_notation). While I can see how someone might think its Hungarian Notation (of which there are 3 distinct types), it really isn't. My approach simply splits a variable name into a few different parts so that you can search/filter on them later.