ViolatesCommand-QuerySeparationCommentedout codeCodeDuplicationGodclassUnpronounceable/Confusing namingRepetitiveNamingSwitchStatementAbuseUnreadableRegexHidden sideeffects (e.g.parametermodifying)Errorcodesinstead ofexceptionCatchingexceptionsand loggingonlyVariabledeclaredfar fromits usageLongMethodCommentsexplainingCodeDependentfunctionsare farapartTemporaryfields(assigned now,used maybenever?)FREEOverlycomplexbooleanconditionDeepnestingCommentedOut CodeMagicNumbers /MagicStringsReturn nullinstead of anemptycollection /valueToo manyarguments(>4)Forever//TODOMessageChains –a.b().c().d()...ViolatesCommand-QuerySeparationCommentedout codeCodeDuplicationGodclassUnpronounceable/Confusing namingRepetitiveNamingSwitchStatementAbuseUnreadableRegexHidden sideeffects (e.g.parametermodifying)Errorcodesinstead ofexceptionCatchingexceptionsand loggingonlyVariabledeclaredfar fromits usageLongMethodCommentsexplainingCodeDependentfunctionsare farapartTemporaryfields(assigned now,used maybenever?)FREEOverlycomplexbooleanconditionDeepnestingCommentedOut CodeMagicNumbers /MagicStringsReturn nullinstead of anemptycollection /valueToo manyarguments(>4)Forever//TODOMessageChains –a.b().c().d()...

Code Smell Bingo - Call List

(Print) Use this randomly generated list as your call list when playing the game. There is no need to say the BINGO column name. Place some kind of mark (like an X, a checkmark, a dot, tally mark, etc) on each cell as you announce it, to keep track. You can also cut out each item, place them in a bag and pull words from the bag.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
  1. Violates Command-Query Separation
  2. Commented out code
  3. Code Duplication
  4. God class
  5. Unpronounceable/ Confusing naming
  6. Repetitive Naming
  7. Switch Statement Abuse
  8. Unreadable Regex
  9. Hidden side effects (e.g. parameter modifying)
  10. Error codes instead of exception
  11. Catching exceptions and logging only
  12. Variable declared far from its usage
  13. Long Method
  14. Comments explaining Code
  15. Dependent functions are far apart
  16. Temporary fields (assigned now, used maybe never?)
  17. FREE
  18. Overly complex boolean condition
  19. Deep nesting
  20. Commented Out Code
  21. Magic Numbers / Magic Strings
  22. Return null instead of an empty collection / value
  23. Too many arguments (>4)
  24. Forever //TODO
  25. Message Chains – a.b().c().d() ...