Same Name Different Meaning
Sometimes in code we find that the same names are used multiple places to mean different things. This is a CodeSmell that easily leads to misinterpretation.
Some examples:
Overloaded Vocabulary
-
- This is the fault of DeGeneralization. Curses! Curses = The aptly named cursor control library under Unix??
-
"Thread" as in ThreadMode vs. "Thread" as in multi-threading.
-
"Pointer"/"Reference" in the C/C++ sense vs. the English sense.
-
"Serialize," as in "converting an object and, recursively, the objects to which it refers, into a sequence of bytes for storage to disk," vs. "serialize," as in "causing to occur in some sequence as opposed to potentially simultaneously."
-
"Order" meaning a request or purchase (order me a box of pencils) vs. "Order" for sorting and sequence (put the pencils in order)
-
"Invoice" (Backup, Archive, and many other words) which can be both noun and verb. "I have to invoice before you can have your invoice."
-
"static" keyword has different uses in C++: static variable keep its value even after it goes out of scope..and also static member variables, and static member classes.
-
...many others. (TODO)
Identical Identifiers
-
- Reusing variables for different purposes is a sign that your function has probably run too long, or that the variable is in the wrong (too global) scope. [SplitTemporaryVariable -- page 128 of RefactoringImprovingTheDesignOfExistingCode book.]
CategoryNaming