The Single Responsibility Principle (SRP) says that a class should have only one reason to change. The same idea works at method level: keep low-level actions tightly scoped while allowing higher-level methods to coordinate broader processes. The useful boundary is not a fixed line count; it is the point where a method remains meaningful, focused, and easy to understand. section 2.3.5 section 9.1.2
Name a complex decision
A dense condition such as `user.isActive() && !user.isExpired() && user.hasRights()` can obscure the surrounding story. Extracting it as `isEligible(user)` gives the decision a name and lets the higher-level code communicate intent. The extraction is worthwhile when it reduces cognitive load; extracting every short line is not. section 2.3.5
Use judgment when deciding where to split a method:
- Split methods that become too long, but do not shrink code merely to meet a line-count target. section 2.3.5
- Keep action-level responsibilities narrow, such as validating one field; allow higher-level methods to cover broader workflows. section 2.3.5
- Extract cognitively heavy Boolean conditions or deep nesting into clearly named methods. section 2.3.5






