Introduction Introduction SystemArchitecture MeaningfulNames ExceptionHandling CodeComments Classes Different nature of classes Smart vs Dumb classes Single Responsibility Principle Class cohesion Architecture Methods Do one thing How many arguments? The Stepdown Rule Switch Statements vs Polymorphism Creating extension methods Avoid side-effects Naming What to avoid Naming classes Method naming formula Command/Query Seperation Naming method arguments