Wiki source code of Expressive Names
Show last authors
| author | version | line-number | content |
|---|---|---|---|
| 1 | * | ||
| 2 | |||
| 3 | Choose meaningful names. | ||
| 4 | * Names should be chosen as carefully as the name of his firstborn child. | ||
| 5 | * Implicity: It should be self-evident from reading the code how it works. | ||
| 6 | * | ||
| 7 | |||
| 8 | Choose names that are descriptive of the purpose. | ||
| 9 | * For example, a variables name should stand for one concept. Its better to have a variable unorderedNumbers, which is sorted and stored in orderedNumbers instead of saving both lists in the same variable numbers. | ||
| 10 | * | ||
| 11 | |||
| 12 | Avoid misinformation. | ||
| 13 | * For example, ambiguities, confusion with similar names or easily confused characters (l and 1, O and 0). | ||
| 14 | * | ||
| 15 | |||
| 16 | Make differences clear. | ||
| 17 | * Avoid very similar expressions. | ||
| 18 | * Blank words are redundant (a, an, the, info, data). | ||
| 19 | * Use pronounceable names. Programming is a social activity that people talk about with others. | ||
| 20 | * | ||
| 21 | |||
| 22 | Use searchable names. | ||
| 23 | * The length of a name should correspond to the size of its scope. For local counting loops, one letter is enough; if the variable is used in multiple places in the code, it needs a longer name. | ||
| 24 | * | ||
| 25 | |||
| 26 | Avoid encodings. | ||
| 27 | * There should be no references to the scope or type of the variable in the name. | ||
| 28 | * | ||
| 29 | |||
| 30 | Avoid mental mappings. | ||
| 31 | * The name of a variable should not have to be mentally translated into another. Clarity has absolute priority. | ||
| 32 | * | ||
| 33 | |||
| 34 | Class names | ||
| 35 | * Names of classes consist of nouns or substantivistic expressions. | ||
| 36 | * | ||
| 37 | |||
| 38 | Method names | ||
| 39 | * They consist of a verb or an expression with a verb. Accessors, mutators, and predicates should be named after their value and follow the JavaBean standard (prefixes: get, set, is, has). | ||
| 40 | * Overloaded constructors can lead to confusion, e.g. if a float is to be passed once and an int once. Constructors should be declared as private and functions should be used to create instances whose names highlight the difference. | ||
| 41 | * Avoid humorous names. | ||
| 42 | * | ||
| 43 | |||
| 44 | Choose one word per concept. | ||
| 45 | * "get" instead of "fetch" and "retrieve". | ||
| 46 | * No puns. | ||
| 47 | * Avoid ambiguities as in the word "add" (addition or adding). | ||
| 48 | * | ||
| 49 | |||
| 50 | Use names of the solution domain. | ||
| 51 | * Programmers will read your code, so use technical language. | ||
| 52 | * | ||
| 53 | |||
| 54 | Use names of the problem domain. | ||
| 55 | * If there are no terms from computer science. Then at least domain experts can refer to it. | ||
| 56 | * | ||
| 57 | |||
| 58 | Add meaningful context. | ||
| 59 | * Together with the names of other variables and methods, this context can be created. | ||
| 60 | * | ||
| 61 | |||
| 62 | Do not add superfluous context. | ||
| 63 | * Shorter names are better than longer ones, as long as they are clear. Names should be simple, but meaningful. | ||
| 64 | * Dare to rename things. Your colleagues should be grateful for improvements. |