Agile Design PatternBy: Poppy Martono
Design Smells*smeeeeelly cats*
RigidityDifficult to change
FragilitySingle change = break in many places
Immobilityhard to move
Viscosity of softwareEasier to hack than preserving the design
Viscosity of environmentslow and inefficient development environment
Needless ComplexitySoftware contains element that ain’tuseful atm(*maybe* in the future)
Needless Repetitioncopy paste* code without refactoring*lime cat is back…I really love the lame lime cat…
OpacityDifficult  to understand*code review?*
Enough talking about those lame cats...
How to remove those design smells?
Use SOLID principle
S  : SRPO : OCPL  : LISKOVI   : ISPD : DI
Single Responsibility Principle
most simple principle buthardest to define
What is the single responsibility of each class?
Single responsibility = single reason for change
A class should have one and only one reason to change
Example:This class does too much. Help!
Easy way to follow SRP:Constantly ask yourself whether every method and operation of a class is directlyrelatedto the name of that class
Open Close Principle
Open for extensionClose for modification
How to achieve OCP?TDD = force the system to be testableWe will have to build abstraction to make the system testable
LISKOV Substitution Principle
Clues for LSP ViolationLook for a derivative class:which removefunctionality from base class and does less than its base.not substitutable from base class
Interface Segregation Principle
Dealing with “fat” interfacewhich can be broken up to group of methods and serves different client
On ISP:Client should not be forced to depend on methods they do not use
Dependency Inversion
How to design in agile team?
Design = happens every time, on every line of code
Small steps, small refactoring
Discuss as a team
It’s harder to be kind than to be clever
Remember the “soft” in software, we can always change it later
Congratulations You just read* the book of Agile Design Pattern in C#Author: Robert C. Martin & Micah Martin*about 10 pages out of 1000 pages

Agile design pattern