O'Reilly logo
live online training icon Live Online training

SOLID Principles of Object-Oriented and Agile Design

Robert Martin

Robert C. “Uncle Bob” Martin is a software craftsman, and one of the leading names in contemporary software development. His books and videos are immensely popular.

In this unique live training session, Uncle Bob will use his signature presentation style to explain the benefits of the SOLID approach to application development. Crafted and defined through decades of first-hand design experience, SOLID has five principles that, when followed, make software designs easier to understand, more flexible, and less problematic to maintain.

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

This training course is for you because...

  • You are an application developer, programmer, software engineer, or systems analyst who wants to know what object-oriented design is all about.
  • You take pride in you development efforts.
  • You want to understand the benefits of object-oriented design, the most popular paradigm in contemporary application development.

Prerequisites

  • Software development experience
  • Familiarity of common software design

Recommended Preparation:

Clean Architecture (book) - Part III Design Principles

Clean Code Video Series (video)

Clean Coder Video Series (Expanded Edition)

Clean Code (book)

About your instructor

  • Robert C. Martin (Uncle Bob) has been a programmer since 1970. He is the co-founder of cleancoders.com, which offers online video training for software developers, and is the founder of Uncle Bob Consulting LLC, which offers software consulting, training, and skill development services to major corporations worldwide. He served as the Master Craftsman at 8th Light, Inc., a Chicago-based software consulting firm. He has published dozens of articles in various trade journals and is a regular speaker at international conferences and trade shows. He served three years as the editor-in-chief of the C++ Report and served as the first chairman of the Agile Alliance.

    Martin has authored and edited many books, including Clean Architecture, The Clean Coder, Clean Code, UML for Java Programmers, Agile Software Development, Extreme Programming in Practice, More C++ Gems, Pattern Languages of Program Design 3, and Designing Object Oriented C++ Applications Using the Booch Method.

Schedule

The timeframes are only estimates and may vary according to how the class is progressing

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