Maxi Contieri ⭐⭐⭐ Posted on Oct 28, 2020 • Updated on Jun 11, 2021 • Originally published at maximilianocontieri.com Code Smell 09 - Dead Code #codenewbie #tutorial Code Smells (216 Part Series) 1 Code Smell 01 - Anemic Models 2 Code Smell 02 - Constants and Magic Numbers ... 212 more parts... 3 Code Smell 03 - Functions Are Too Long 4 Code Smell 04 - String Abusers 5 Code Smell 05 - Comment Abusers 6 Code Smell 06 - Too Clever Programmer 7 Code Smell 07 - Boolean Variables 8 Code Smell 08 - Long Chains Of Collaborations 9 Code Smell 09 - Dead Code 10 Code Smell 10 - Too Many Arguments 11 Code Smell 11 - Subclassification for Code Reuse 12 Code Smell 12 - Null 13 Code Smell 13 - Empty Constructors 14 Code Smell 14 - God Objects 15 Code Smell 15 - Missed Preconditions 16 Code Smell 16 - Ripple Effect 17 Code Smell 17 - Global Functions 18 Code Smell 18 — Static Functions 19 Code Smell 19 — Optional Arguments 20 Code Smell 20 - Premature Optimization 21 Code Smell 21 - Anonymous Functions Abusers 22 Code Smell 22 - Helpers 23 Code Smell 23 - Instance Type Checking 24 Code Smell 24 - Boolean Coercions 25 Code Smell 25 - Pattern Abusers 26 Code Smell 26 - Exceptions Polluting 27 Code Smell 27 - Associative Arrays 28 Code Smell 28 - Setters 29 Code Smell 29 - Settings/Configs 30 Code Smell 30 - Mocking Business 31 Code Smell 31 - Accidental Methods on Business Objects 32 Code Smell 32 - Singletons 33 Code Smell 33 - Abbreviations 34 Code Smell 34 - Too Many Attributes 35 Code Smell 35 - State as Properties 36 Code Smell 36 - Switch/case/elseif/else/if statements 37 Code Smell 37 - Protected Attributes 38 Code Smell 38 - Abstract Names 39 Code Smell 39 - new Date() 40 Code Smell 40 - DTOs 41 Code Smell 41 - Regular Expression Abusers 42 Code Smell 42 - Warnings/Strict Mode Off 43 Code Smell 43 - Concrete Classes Subclassified 44 Code Smell 44 - Magic Corrections 45 Code Smell 45 - Not Polymorphic 46 Code Smell 46 - Repeated Code 47 Code Smell 47 - Diagrams 48 Code Smell 48 - Code Without Standards 49 Code Smell 49 - Caches 50 Code Smell 50 - Object Keys 51 Code Smell 51 - Double Negatives 52 Code Smell 52 - Fragile Tests 53 Code Smell 53 - Explicit Iteration 54 Code Smell 54 - Anchor Boats 55 Code Smell 55 - Object Orgy 56 Code Smell 56 - Preprocessors 57 Code Smell 57 - Versioned Functions 58 Code Smell 58 - Yo-yo Problem 59 Code Smell 59 - Basic / Do Functions 60 Code Smell 60 - Global Classes 61 Code Smell 61 - Coupling to Classes 62 Code Smell 62 - Flag Variables 63 Code Smell 63 - Feature Envy 64 Code Smell 64 - Inappropriate Intimacy 65 Code Smell 65 - Variables Named After Types 66 Code Smell 66 - Shotgun Surgery 67 Code Smell 67 - Middle Man 68 Code Smell 68 - Getters 69 Code Smell 69 - Big Bang (JavaScript Ridiculous Castings) 70 Code Smell 70 - Anemic Model Generators 71 Code Smell 71 - Magic Floats Disguised as Decimals 72 Code Smell 72 - Return Codes 73 Code Smell 73 - Exceptions for Expected Cases 74 Code Smell 74 - Empty Lines 75 Code Smell 75 - Comments Inside a Method 76 Code Smell 76 - Generic Assertions 77 Code Smell 77 - Timestamps 78 Code Smell 78 - Callback Hell 79 Code Smell 79 - TheResult 80 Code Smell 80 - Nested Try/Catch 81 Code Smell 81 - Result 82 Code Smell 82 - Tests Violating Encapsulation 83 Code Smell 83 - Variables Reassignment 84 Code Smell 84 - Max < Min (Javascript) 85 Code Smell 85 - And Functions 86 Code Smell 86 - Mutable Const Arrays 87 Code Smell 87 - Inconsistent Parameters Sorting 88 Code Smell 88 - Lazy Initialization 89 Code Smell 89 - Math Feature Envy 90 Code Smell 90 - Implementative Callback Events 91 Code Smell 91 - Test Asserts without Description 92 Code Smell 92 - Isolated Subclasses Names 93 Code Smell 93 - Send me Anything 94 Code Smell 94 - Too Many imports 95 Code Smell 95 - Premature Classification 96 Code Smell 96 - My Objects 97 Code Smell 97 - Error Messages Without Empathy 98 Code Smell 98 - Speling Mistakes 99 Code Smell 99 - First Second 100 Code Smell 100 - GoTo 101 Code Smell 101 - Comparison Against Booleans 102 Code Smell 102 - Arrow Code 103 Code Smell 103 - Double Encapsulation 104 Code Smell 104 - Assert True 105 Code Smell 105 - Comedian Methods 106 Code Smell 106 - Production Dependent Code 107 Code Smell 107 - Variables Reuse 108 Code Smell 108 - Float Assertions 109 Code Smell 109 - Automatic Properties 110 Code Smell 110 - Switches With Defaults 111 Code Smell 111 - Modifying Collections While Traversing 112 Code Smell 112 - Testing Private Methods 113 Code Smell 113 - Data Naming 114 Code Smell 114 - Empty Class 115 Code Smell 115 - Return True 116 Code Smell 116 - Variables Declared With 'var' 117 Code Smell 117 - Unrealistic Data 118 Code Smell 118 - Return False 119 Code Smell 119 - Stairs Code 120 Code Smell 120 - Sequential IDs 121 Code Smell 121 - String Validations 122 Code Smell 122 - Primitive Obsession 123 Code Smell 123 - Mixed 'What' and 'How' 124 Code Smell 124 - Divergent Change 125 Code Smell 125 - 'IS-A' Relationship 126 Code Smell 126 - Fake Null Object 127 Code Smell 127 - Mutable Constants 128 Code Smell 128 - Non English Coding 129 Code Smell 129 - Structural Optimizations 130 Code Smell 130 - AddressImpl 131 Code Smell 131 - Zero Argument Constructor 132 Code Smell 132 - Exception Try Too Broad 133 Code Smell 133 - Hardcoded IF Conditions 134 Code Smell 134 - Specialized Business Collections 135 Code Smell 135 - Interfaces With just One Realization 136 Code Smell 136 - Classes With just One Subclass 137 Code Smell 137 - Inheritance Tree Too Deep 138 Code Smell 138 - Packages Dependency 139 Code Smell 139 - Business Code in the User Interface 140 Code Smell 140 - Short Circuit Evaluation 141 Code Smell 141 - IEngine , AVehicle, ImplCar 142 Code Smell 142 - Queries in Constructors 143 Code Smell 143 - Data Clumps 144 Code Smell 144 - Fungible Objects 145 Code Smell 145 - Short Circuit Hack 146 Code Smell 146 - Getter Comments 147 Code Smell 147 - Too Many Methods 148 Code Smell 148 - ToDos 149 Code Smell 149 - Optional Chaining 150 Code Smell 150 - Equal Comparison 151 Code Smell 151 - Commented Code 152 Code Smell 152 - Logical Comment 153 Code Smell 153 - Too Long Names 154 Code Smell 154 - Too Many Variables 155 Code Smell 155 - Multiple Promises 156 Code Smell 156 - Implicit Else 157 Code Smell 157 - Balance at 0 158 Code Smell 158 - Variables not Variable 159 CoDe SmElL 159 - mIxEd_cASe 160 Code Smell 160 - Invalid Id = 9999 161 Code Smell 161 - Abstract/Final/Undefined Classes 162 Code Smell 162 - Too Many Parentheses 163 Code Smell 163 - Collection in Name 164 Code Smell 164 - Mixed Indentations 165 Code Smell 165 - Empty Exception Blocks 166 Code Smell 166 - Low-Level Errors on User Interface 167 Code Smell 167 - Hashing Comparison 168 Code Smell 168 - Undocumented Decisions 169 Code Smell 169 - Glued Methods 170 Code Smell 170 - Refactor with Functional Changes 171 Code Smell 171 - Plural Classes 172 Code Smell 172 - Default Argument Values Not Last 173 Code Smell 173 - Broken Windows 174 Code Smell 174 - Class Name in Attributes 175 Code Smell 175 - Changes Without Coverage 176 Code Smell 176 - Changes in Essence 177 Code Smell 177 - Missing Small Objects 178 Code Smell 178 - Subsets Violation 179 Code Smell 179 - Known Bugs 180 Code Smell 180 - BitWise Optimizations 181 Code Smell 181 - Nested Classes 182 Code Smell 182 - Over Generalization 183 Code Smell 183 - Obsolete Comments 184 Code Smell 184 - Exception Arrow Code 185 Code Smell 185 - Evil Regular Expressions 186 Code Smell 186 - Hardcoded Business Conditions 187 ㄥ8Ɩ llǝɯS ǝpoƆ - spɹɐʍʞɔɐq ǝslƎ/ℲI 188 Code Smell 188 - Redundant Parameter Names 189 Code Smell 189 - Not Sanitized Input 190 Code Smell 190 - Unnecessary Properties 191 Code Smell 191 - Misplaced Responsibility 192 Code Smell 192 - Optional Attributes 193 Code Smell 193 - Switch Instead of Formula 194 Code Smell 194 - Missing Interval 195 Code Smell 195 - Yoda Conditions 196 Code Smell 196 - Javascript Array Constructors 197 Code Smell 197 - Gratuitous Context 198 Code Smell 198 - Hidden Assumptions 199 Code Smell 199 - Gratuitous Booleans 200 Code Smell 200 - Poltergeist 201 Code Smell 201 - Nested Ternaries 202 Code Smell 202 - God Constant Class 203 Code Smell 203 - Irrelevant Test Information 204 Code Smell 204 - Tests Depending on Dates 205 Code Smell 205 - Code in Destructors 206 Code Smell 206 - Long Ternaries 207 Code Smell 207 - Dynamic Methods 208 Code Smell 208 - Null Island 209 Code Smell 209 - Side Effects 210 Code Smell 210 - Dynamic Properties 211 Code Smell 211 - Tab over Spaces 212 Code Smell 212 - Elvis Operator 213 Code Smell 213 - Hoisting 214 Code Smell 214 - Duplicate Parameter Names 215 Code Smell 215 - Deserializing Object Vulnerability 216 Code Smell 216 - Fat Interface Code that is no longer used or needed. Problems Maintainability Solutions Remove the code KISS Examples Gold plating code or Yagni code. Exceptions Avoid metaprogramming. When used it is very difficult to find references to the code.