Skip to content

Instantly share code, notes, and snippets.

@OddExtension5
Last active January 27, 2020 17:40
Show Gist options
  • Save OddExtension5/5590a2a8197a31aa3bf1d4ca3ee20f83 to your computer and use it in GitHub Desktop.
Save OddExtension5/5590a2a8197a31aa3bf1d4ca3ee20f83 to your computer and use it in GitHub Desktop.
SOLID Principles of Object-Oriented and Agile Design By Robert Martin

Workshop Details

  + January 27, 2020 (9:30pm – 12:30am IST)
  + Robert C. "Uncle Bob" Martin

What you'll learn-and how you can apply it

  • SOLID principles of software design
  • Clean Clode basics
  • Ensure that dependencies are well managed so that the code remains flexible, robust, and reusable
  • Understand costs and trade-offs associated with object-oriented design and get a leg up in ensuring that your code base is much cleaner
  • Professional practices

Schedule

Segment 1: Software Rot - Messy Code - Software Maintenance Cost - Degrading Designs - Other Factors (Rigidity, Fragility, Immobility, Viscosity, Needless Complexity, Needless Repetition, Opacity) - Code Smells

Segment 2: Remedies - Manage Dependencies - Separate Concerns - Applying Principles of Class Design - Attributes of Good Design

Segment 3: Clean Code - Clean Code Separates Levels of Detail - Clean Code Tells a Story - Clean Code Needs Few Comments - Clean Code Has Intention-Revealing - Clean Code Has Small Methods - Clean Code Has Command/Query Separation ...And MUCH More!

Q&A

Break (length: 5-10 min)

Segment 4: Professionalism - Understandable Code Doesn’t Just Happen - “But we don’t have time!” - Professional Responsibility - Make it YOUR Responsibility!

Segment 5: Test-Driven Development - The Three Laws of TDD - The Benefits of TDD - Parachute - Objections Heard (but not believed) - Test-Driven Development Cycle - Transform Design with Small Steps

Segment 6: SOLID - The History of SOLID - SRP -- The Single Repository Principle - OCP -- The Open Closed Principle - LSP -- The Liskov Substitution Principle - ISP -- The Interface Segregation Principle - DIP -- The Dependency Inversion Principle

Section 7: Practices - Practices that Fight Rot - Rules of Simple Design - Automated Testing - TDD & Refactoring - Transform Design with SMall Steps - Pair Programming - Collective Ownership - Continuous Integration

Conclusion - SOLID Review - Other Resources

SOLID

A SOLID ia an acronym for a set of five software development principles, which if followed, are intended to help developers create flexibile and clean code.

The five principles are:

  1. The Single responsibility Principle:

    Classes should have a single reponsibility and thus only a single reason to change. more detail

  2. The Open/Closed Principle:

    Classes and other entities should be open for extensions but closed for modification.

  3. The Liskov Substitution Principle:

    Objects would be replaceable by their subtypes.

  4. The Interface Segregation Principle:

    Interfaces should be client specific rather than general.

  5. The Dependency Inversion Principle:

    Depend on abstractions rather than concretions.

CLEAN CODE

  1. Clean Code separates levels of details
  2. Clean Code tells a story
  3. Clean Code needs few comments
  4. Clean Code has intention-revealing names
  5. Clean Code has small methods
  6. Clean Code has command/query separation
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment