This document discusses the single responsibility principle (SRP) of object-oriented design. SRP states that every class should have a single responsibility, and its services should be narrowly aligned with that responsibility. Following SRP leads to code that is more organized, less fragile, easier to name and change. Violations of SRP can be recognized through structures that are too long or complex, or behaviors where a class needs to change for multiple reasons. Developers should follow SRP by writing testable code, using metrics to measure quality, applying other design principles, and refactoring code mercilessly.