Category: Software Design
-

The Purpose of Getters and Setters
First of all, I don’t advocate for getters and setters at all. Don’t use them (especially setters) if you find an alternative. There usually is a better design. I won’t go into that here. I want to focus on a bigger, very common problem: Many of the people who use…
-

SOLID Principles: Common Misconceptions
The SOLID principles for software design can be a helpful thinking and communication tool of a software developer, even if perhaps just as a reason to think about software design from another perspective. While there are many more software design principles that are arguably at least as important, the SOLID…
-

SRP Misunderstood
The Single Reponsibility Principle (SRP) is commonly misunderstood. Often you might hear explanations like “a class should do only one thing”, sometimes even extended to methods. Here’s a heuristic that I think might help: This may not only lead to less-bad code, but as a side effect also to a…
-

Technical Empathy
Technical empathy is one of those concepts that seemed so obvious once I was aware of them, and yet it was quite a revelation when I first heard of it from Michael Feathers a few years ago. “The ability to see the system from the point of view of the…
-

The SRP is not SoC
The Single Responsibility Principle (SRP) aims to increase cohesion and to minimize the risk of breaking functionality through seemingly unrelated code changes. However, many misunderstand the SRP, thinking it means a class should only do one thing, or that the SRP can be applied to functions or architectural layers rather…
