source code to apply for new needs. For example, although a = b * c; is syntactically correct, its purpose is not evident. Contrast this with: weekly_pay = hours_worked * hourly_pay_rate; which implies the intent and meaning of the source code, at least to those familiar with the context of the statement. Experiments suggest that identifier style affects recall and precision and that familiarity with a style speeds recall. Common elements The exact rules of a naming convention depend on the context in which they are employed. Nevertheless, there are several common elements that influence most if not all naming conventions in common use today. Length of identifiers Fundamental elements of all naming conventions are the rules related to identifier length (i.e., the finite number of individual characters allowed in an identifier). Some rules dictate a fixed numerical bound, while others specify less precise heuristics or guidelines. Identifier length rules are routinely contested in practice, and subject to much debate academically. Some considerations: shorter identifiers may be preferred as more expedient, because they are easier to type (although many IDEs and text-editors provide text-completion, which mitigates this) extremely short identifiers (such as 'i' or 'j') are very difficult to uniquely distinguish using automated search and replace tools (although this is not an issue for regex-based tools) longer identifiers may be preferred because short identifiers cannot encode enough information or appear too cryptic longer identifiers may be disfavored because of visual clutter It is an open research issue whether some programmers prefer shorter identifiers because they are easier to type, or think up, than longer identifiers, or because in many situations a longer identifier simply clutters the visible code and provides no perceived additional benefit. Brevity in programming could be in part attributed to: early linkers which required variable names to be restricted to 6 characters to save memory. A later "advance" allowed longer variable names to be used for human comprehensibility, but where only the first few characters were significant. In some versions of BASIC such as TRS-80 Level 2 Basic, long names were allowed, but only the first two letters were significant. This feature permitted erroneous behaviour that could be difficult to debug, for example when names such as "VALUE" and "VAT" were used and intended to be distinct. early source code editors lacking autocomplete early low-resolution monitors with limited line length (e.g. only 80 characters) much of computer