-
Notifications
You must be signed in to change notification settings - Fork 13
Code Smells Types
Michel Pawlak edited this page Jan 20, 2017
·
1 revision
The SmellType enum currently can take the following values (greatly inspired by Coding Horrors' code smells and Industrial Logic's smells to refactorings) :
SmellType | When should I use it ? | Default severity |
---|---|---|
ABBREVIATIONS_USAGE | Confusing abbreviations are being used instead of explicit names | MAJOR |
ANTI_PATTERN | An anti-pattern has been used. | BLOCKER |
BAD_DESIGN | The design is really bad and should be improved. | BLOCKER |
BAD_FRAMEWORK_USAGE | A framework is not used the way it should | BLOCKER |
BAD_LOGGING | The logging message, level, is inappropriate or the log is redundant. | MAJOR |
HOW_COMMENT | The comment or documentation focuses on the "how" instead of the "what" | MAJOR |
INDECENT_EXPOSURE | The class unnecessarily exposes its internals. | CRITICAL |
MEANINGLESS_COMMENT | The comment or documentation text is meaningless. | MAJOR |
MIDDLE_MAN | The class delegates all its work, is it really needed ? | CRITICAL |
MISSING_DOCUMENTATION | Mandatory documentation is missing. | CRITICAL |
MISSING_IMPLEMENTATION | A method's implementation is missing. | MINOR |
MISSING_TEST | An important or critical test is missing. | BLOCKER |
MULTIPLE_RESPONSIBILITIES | The class or method has multiple responsibilities. | BLOCKER |
NON_EXCEPTION | The exceptions mechanism is used for non exceptional cases. | MAJOR |
NON_COMPLIANCE_WITH_STANDARDS | The code does not comply with team or company development standards. | CRITICAL |
ODDBALL_SOLUTION | The problem is solved in multiple ways throughout the system. | CRITICAL |
OVERCOMPLICATED_ALGORITHM | There is a way to simplify an algorithm. | MAJOR |
OTHER | Other smell that could not be categorized in any of the existing code smells types. | MINOR |
PRIMITIVES_OBSESSION | The code relies too much on primitives instead of classes. | CRITICAL |
REFUSED_BEQUEST | The class extends another class but does not use its methods. | CRITICAL |
REINVENTED_WHEEL | A library does the same job, probably better | BLOCKER |
SOLUTION_SPRAWL | It takes too many classes to do anything useful. | CRITICAL |
SPECULATIVE_GENERALITY | The code is written thinking about tomorrow's problems. | CRITICAL |
UNCOMMUNICATIVE_NAME | The name does not communicate the purpose of the class, field, method. | CRITICAL |
USELESS_TEST | The test is useless (it tests nothing) | MAJOR |
WRONG_LANGUAGE | Wrong language (french, english, german...) is being used | MAJOR |
WRONG_LOGIC | Wrong (business) logic is being used. | BLOCKER |
Feel free to ask for new values!