# Naming Conventions Word names in RETRO generally follow the following conventions. ## General Guidelines * Readability is important * Be consistent * Don't use a prefix as the first character of a name * Don't use underscores in word names * Use short names for indices * Word names start with a `-` for "not" * Words returning a flag end in ? ## Typical Format The word names will generally follow a form like: [namespace:]name The `namespace:` is optional, but recommended for consistency with the rest of the system and to make it easier to identify related words. ## Case Word names are lowercase, with a dash (-) for compound names. hello drop-pair s:for-each Variables use TitleCase, with no dash between compound names. Base Heap StringBuffers Constants are UPPERCASE, with a dash (-) for compound names. TRUE FALSE f:PI MAX-STRING-LENGTH ## Namespaces Words are grouped into broad namespaces by attaching a short prefix string to the start of a name. The common namespaces are: | Prefix | Contains | | ------- | ------------------------------------------------------ | | a: | Words operating on simple arrays | | ASCII: | ASCII character constants for control characters | | buffer: | Words for operating on a simple linear LIFO buffer | | c: | Words for operating on ASCII character data | | class: | Contains class handlers for words | | d: | Words operating on the Dictionary | | err: | Words for handling errors | | io: | General I/O words | | n: | Words operating on numeric data | | prefix: | Contains prefix handlers | | s: | Words operating on string data | | v: | Words operating on variables | | file: | File I/O words | | f: | Floating Point words | | unix: | Unix system call words | ## Tips ### Don't Start Names With Prefix Characters Avoid using a prefix as the first character of a word name. RETRO will look for prefixes first, this will prevent direct use of the work in question. To find a list of prefix characters, do: 'prefix: d:words-with ### Don't Use Underscores Underscores in strings are replaced by spaces. This is problematic, especially with variables. Consider: 'test_name var #188 !test_name In this, the string for the name is converted to "test name". The store in the second line will not add the space, so resolves to an incorrect address. I personally recommend avoiding the use of underscores in any word names.