As in normal life, we are giving names to everything we want to reference in future, never mind if it is a dog, cat, human or variable. That's why there is necessity to give names to all objects defined by ASN.1 - or, called in intention of ASN.1 - reference. ASN.1 provides us with an alphabet, which letters can be used to do that. Let's have look at it:
uppercase letters: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
lowercase letters: a b c d e f g h i j k l m n o p q r s t u v w x y z
decimal digits: 0 1 2 3 4 5 6 7 8 9
hyphen: -
This alphabet is very similar to that one, we use commonly, only one special character is missing - single space. It is because of space is used in the role of separator. And then - it is also case sensitive, i.e. SEX and SeX are not the same. But those of UN*X nature know it very well, and the others too ;-).
Further, it is usuall to type human names with capital letter first, some languages use capitals also for some special cases, like German for all the substantives. There are also some rules in ASN.1 about spelling object names.
First of all, there is no limitation to reference length, so do not hesitate to give a descriptive name to designed object, such as AccessControlList instead of ACL, because not all the people knows what does this acronym mean, and also an author will forget it in a couple days. Enjoy more fun with longer names!
Any valid reference begins with letter, so you probably woun't be able to specify type of 3MFloppyDisk. Then no valid reference ends with hyphen (tell me the reason why it should...) nor contains spaces. Latter mentioned seems to be a problem, because we usually use space to separate words. To form multi-word references, mainly two different conventions are used:
And at last, to alow reader distinguish between type notation and value notation, resp. value and type reference, and also reserved words, simply use next few rules:
OK. That's all for now about naming convention, now let's have a look at problems, that appear when more designers work on the same project and define more different references with the same name. See next page, modules.