Single Responsibility & Cohesion
Split Employee With Extract Class
Split the OrderService God Class
Extract a Repository Seam
Separate Report Data From Formatting
Extract Class From God Class
Open Closed & Polymorphism
Replace Type Switch With Shape Polymorphism
Refactor Discounts to Strategy Pattern
Refactor PaymentProcessor to Strategy
Replace Type Switch With Polymorphism
Replace Shipping-Cost Conditionals With Strategies
Extract Exporter Strategy Per Format
Refactor NotificationService to Strategy
Composable Validation Rules
Liskov Substitution
Extract a Flyable Abstraction
Fix the Square/Rectangle LSP Violation
Honor the Base withdraw() Contract
Split the Read and Mutation Contracts
Interface Segregation
Segregate the Fat Worker Interface
Segregate the Multifunction Device Interface
Depend on a Narrow Role Interface
Split Repository Into Read and Write
Dependency Inversion & Injection
Inject EmailSender via Constructor
Inject OrderService Dependencies via Constructor
Inject a Logger Abstraction
Inject a PaymentGateway Seam
Invert ReportService Infra Dependencies
Decouple ProductService From the Database
Inject a Random Source Seam
Inject the HTTP Transport as a Parameter
Replace Payment Switch With Polymorphism
Dry & Duplication
Extract Duplicated Calculation Into a Helper
Extract Magic Numbers Into Constants
Parameterize Two Near-Identical Functions
Consolidate Duplicate Statements Across Branches
Extract Shared Input Validation
Kiss & Yagni
Extract Steps From a Long Method
Split the Flag Argument Into Two Functions
Introduce a Parameter Object
Encapsulation & Law Of Demeter
Encapsulate a Public Mutable Field
Encapsulate the Exposed Collection
Hide Delegate to Fix Demeter Violation
Fix Feature Envy With Move Method
Guard an Invariant Behind Behavior
Extract a Money Value Object
Tell, Don't Ask: wallet.pay(amount)
Relocate Alerting With Tell-Don't-Ask
Composition Over Inheritance
Replace Notifier Inheritance With Delegation
Replace Subclass Tree With Strategies
Eliminate a Refused Bequest
Replace Subclass Explosion With Strategy Injection
Immutability & Pure Functions
Refactor Mutating Sorter to Pure Function
Separate Computation From Printing
Split Pure Core From Side Effects
Make Discount Greeting Pure
Refactoring Katas
Refactor TennisGame1 Scoring
Refactor the Theatrical Players statement()
Polymorphic Parrot Speed and Cry
Refactor Gilded Rose and Add Conjured Items
Break Seams in TripService.getTripsByUser()
Refactor the Ugly Trivia Game
Refactor Supermarket Receipt Offer Engine