Leszynski naming convention
Encyclopedia
The Leszynski naming convention (or LNC) is a variant of Hungarian notation
popularized by consultant Stan Leszynski specifically for use with Microsoft Access
development. Although the naming convention is nowadays often used within the Microsoft Access
community, and is standard in Visual Basic
programming, it is not widely used elsewhere.
The conventions are derived from an earlier set of conventions, the Leszynski/Reddick naming conventions, originally developed in 1992 by Greg Reddick. Eventually, Leszynski and Reddick had different ideas about how the conventions should be developed, and split into two separate sets of conventions, the other being the RVBA Conventions.
As in all Hungarian notations, it uses prefixes (called tags) to indicate the type of objects
and database development fields.
The general structure of Hungarian notation (named after Charles Simonyi
's native country) is to break down object names into the following elements:
[prefix(es)][tag]BaseName[Suffix/Qualifier]
The tags are always lower-case and each word of the object name is capitalized. Spaces and underscores are not used.
the same general advantages also apply to the Leszynski convention.
The use of distinctive prefixes makes your database self-documenting; when you see frmSales in VBA code, you will know that it references a form, and when you see curSales you will know that it is a Currency variable. When selecting a query from a drop-down list, you will know that a query starting with qmak is a make-table query, while one starting with quni is a union query. This information will allow you to avoid errors such as using the SetFocus method (a control method) with a field, or trying to open a table.
Hungarian notation
Hungarian notation is an identifier naming convention in computer programming, in which the name of a variable or function indicates its type or intended use...
popularized by consultant Stan Leszynski specifically for use with Microsoft Access
Microsoft Access
Microsoft Office Access, previously known as Microsoft Access, is a relational database management system from Microsoft that combines the relational Microsoft Jet Database Engine with a graphical user interface and software-development tools. It is a member of the Microsoft Office suite of...
development. Although the naming convention is nowadays often used within the Microsoft Access
Microsoft Access
Microsoft Office Access, previously known as Microsoft Access, is a relational database management system from Microsoft that combines the relational Microsoft Jet Database Engine with a graphical user interface and software-development tools. It is a member of the Microsoft Office suite of...
community, and is standard in Visual Basic
Visual Basic
Visual Basic is the third-generation event-driven programming language and integrated development environment from Microsoft for its COM programming model...
programming, it is not widely used elsewhere.
The conventions are derived from an earlier set of conventions, the Leszynski/Reddick naming conventions, originally developed in 1992 by Greg Reddick. Eventually, Leszynski and Reddick had different ideas about how the conventions should be developed, and split into two separate sets of conventions, the other being the RVBA Conventions.
As in all Hungarian notations, it uses prefixes (called tags) to indicate the type of objects
Object (computer science)
In computer science, an object is any entity that can be manipulated by the commands of a programming language, such as a value, variable, function, or data structure...
and database development fields.
The general structure of Hungarian notation (named after Charles Simonyi
Charles Simonyi
Charles Simonyi is a Hungarian-American computer software executive who, as head of Microsoft's application software group, oversaw the creation of Microsoft's flagship Office suite of applications. He now heads his own company, Intentional Software, with the aim of developing and marketing his...
's native country) is to break down object names into the following elements:
[prefix(es)][tag]BaseName[Suffix/Qualifier]
The tags are always lower-case and each word of the object name is capitalized. Spaces and underscores are not used.
Advantages
Since the Leszynski naming convention is a special form of Hungarian notationHungarian notation
Hungarian notation is an identifier naming convention in computer programming, in which the name of a variable or function indicates its type or intended use...
the same general advantages also apply to the Leszynski convention.
The use of distinctive prefixes makes your database self-documenting; when you see frmSales in VBA code, you will know that it references a form, and when you see curSales you will know that it is a Currency variable. When selecting a query from a drop-down list, you will know that a query starting with qmak is a make-table query, while one starting with quni is a union query. This information will allow you to avoid errors such as using the SetFocus method (a control method) with a field, or trying to open a table.
Disadvantages
- Since the Leszynski naming convention is a special form of Hungarian notationHungarian notationHungarian notation is an identifier naming convention in computer programming, in which the name of a variable or function indicates its type or intended use...
the same general disadvantages also apply to the Leszynski convention. - Changes in database design may require wholesale renaming. For example, replacing a table with a query would involve either retaining the tbl name for the query, or going through the entire database replacing the tbl name with a qry name.
- When transferring the database to a different DBMS, problems will arise if the target DBMS does not support CamelCaseCamelCaseCamelCase , also known as medial capitals, is the practice of writing compound words or phrases in which the elements are joined without spaces, with each element's initial letter capitalized within the compound and the first letter either upper or lower case—as in "LaBelle", "BackColor",...
names. - As every object of the same type starts with the same letter, it is not possible to navigate through the objects in a List box by typing the beginning letter.
Elements
The elements of the naming convention are described in the following table.Component | Description | Example |
---|---|---|
Prefix(es) | A lowercase letter that adds extra information to the tag | p for Public variable |
Tag | A three-letter sequence indicating the object type | tbl for table |
BaseName | A word or two describing the object. If several words are used, each starts with a capital letter, and there are no spaces between them | OutlookContacts – contacts imported from Outlook |
Suffix (RVBA), Qualifier (LNC) | A word giving more specific information about an object | ByDate – the data is sorted by date |
Object | Tag |
---|---|
Incomplete objects, backup objects, or objects that are under development | _ or – (In some versions of Access, dashes sort to the beginning of the database object list.) |
Hidden system objects | zh |
Displayed system objects | zs |
Programmatically created temporary objects | zt |
Backup copies of objects, for later copying or reuse | zz |
Variable Type | Tag |
---|---|
Local variable | [no prefix] |
Local static variable | s |
Module-level variable | m |
Public variable in a form or report module | p |
Public variable declared in the Declarations section of a standard module | g |
Object | Tag |
---|---|
Class module | cls |
Form | frm |
Form (dialog) | fdlg |
Form (menu) | fmnu |
Form (message) | fmsg |
Form (subform) | fsub |
Macro | mcr |
Module | bas |
Query (any type) | qry |
Query (append) | qapp |
Query (crosstab) | qxtb |
Query (data definition) | qddl |
Query (delete) | qdel |
Query (form filter) | qflt |
Query (lookup) | qlkp |
Query (make-table) | qmak |
Query (select) | qry (or qsel) |
Query (SQL pass-through) | qspt |
Query (union) | quni |
Query (update) | qupd |
Report | rpt |
Report (subreport) | rsub |
Table | tbl |
Table (attached dBASE) | tdbf |
Table (attached Excel) | txls |
Table (attached FoxPro) | tfox |
Table (attached Lotus) | twks |
Table (attached ODBC) | todb |
Table (attached Paradox) | tpdx |
Table (attached SQL Server) | tsql |
Table (attached text) | ttxt |
Table (lookup) | tlkp |
Pages | pge |
Object | Tag |
---|---|
Autonumber (random non-sequential) | idn |
Autonumber (replication ID) | idr |
Autonumber (sequential) | ids |
Binary | bin |
Byte | byt |
Currency | cur |
Date/Time | dtm |
Double | dbl |
Hyperlink | hlk |
Integer | int |
Long | lng |
Memo | mem |
OLE | ole |
Single | sng |
Text (character) | chr |
Yes/No (Boolean) | ysn |
Object | Tag |
---|---|
Boolean | bln |
CommandBar | cbr |
Control (generic; useful when cycling through controls on a form or report) | ctl |
Currency | cur |
Database | dbs |
Double | dbl |
Form | frm |
Integer | int |
Long | lng |
QueryDef | qdf |
Report | rpt |
Single | sng |
Snapshot | snp |
String | str |
Table | tbl |
Type (user-defined) | typ |
Variant | var |
Object | Tag |
---|---|
Attachment | att |
Bound object frame | frb |
Chart (graph) | cht |
Check box | chk |
Combo box | cbo |
Command button | cmd |
Custom control | ocx |
Frame | fra |
Hyperlink | hlk |
Image | img |
Label | lbl |
Line | lin |
List box | lst |
Option button | opt |
Option group | grp |
Page (on a Tab control) | pge |
Page break | brk |
Rectangle (shape) | shp |
Subform/report | sub |
Tab control | tab |
Text box | txt |
Toggle button | tgl |
Unbound object frame | fru |
Object/variable name | LNC naming elements | Description |
---|---|---|
tblEmployees | tag + base name | A table of employee data |
qupdSales | tag + base name | A query that updates sales data |
fsubDayMax | tag + base name + qualifier | A subform that shows the maximum day |
intLines | tag + base name | An Integer variable to hold a value representing the number of lines in a Word table |
curSales | tag + base name | A Currency variable holding a Sales value |
pstrForm | prefix + tag + base name | A public String variable holding a form name |
zztblContacts | prefix + tag + base name | A backup Contacts table, for copying and filling with imported data |