In computer programming, a name collision is the nomenclature problem that occurs when the same variable name is used for different things in two separate areas that are joined, merged, or otherwise go from occupying separate namespaces to sharing one. As with the collision of other identifiers, it must be resolved in some way[a] for the new software (such as a mashup) to work right. Problems of name collision, and methods to avoid them, are a common issue in an introductory level analysis of computer languages, such as for C++.
The term "name collision" has been used in computer science for more than three decades, when referring to names in various classification systems.
Avoiding name collisions
There are several techniques for avoiding name collisions, including the use of:
- namespaces - to qualify each name within a separate name group, so that the totally qualified names differ from each other.
- renaming - to change the name of one item (typically the one used less often) into some other name.
- prefixing - putting unique characters before the names so that the names differ and further name collisions are unlikely to happen by accident.
- local variables, variable data items that are local to a module
- Name mangling
- Naming collision
- ^ see hash table#Collision_resolution for details
- ^ a b c "Getting Started" (lesson for C++), Brown University, Computer Science Dept., January 2000 (in text as "Jan 2000"), pages 5-6, webpage (PDF): CS-Brown-Cpp.
- ^ "Name collision in multiple classification hierarchies", Portal ACM (Association for Computing Machinery), by J.L. Knudsen, 1988, webpage: Portal-ACM-607.