The Sad and Happy Faces of Liskov
/
0 Comments
Fundamentally, the Liskov Substitution Principle (LSP) is…
The Difference between Validation and Business Rules
In software development, two concepts still cause…
The Grand Chessboard of Software Design: Unlocking the Strategy Pattern
Have you ever been at a crossroads, paralysed by…
Should We Directly Unit-Test Private Functions?
Software developers have long debated whether to…
The Joy of Read-Only Getters
Read-Only getters (read-only properties in C#) are an excellent…
Unit Testing Non-Deterministic Values
Sometimes we will need to set random or non-deterministic values…
Fixing Misconfigurations With Smart Defaults
In a recent article, we considered what value a program's configuration…
Beyond String Configurations
Sometimes even retrieving simple configuration values can be…
Separate Configuration. Here’s Why.
Consider the configuration code in the constructor for a hypothetical…
What Is Authorisation?
I feel that the security concepts of Authentication and Authorisation…
What Is Authentication?
And why is Authentication central to computer system security? I…
Using Exceptions For Program Control Flow?
With my recent article on when to use exceptions, I got a few…
Exceptions are Confusing. Here’s When to Use Them.
In my days as a junior developer, I didn't understand exceptions.…
There’s Something Seriously Wrong with an HTTP Status Code
I relish writing and communicating general truths on programming…
The Danger of ‘Not Wanting to Break Anything’
If you've worked with seriously convoluted, no-nonsense legacy…
Beware of Shotgun Surgery
Have you ever had to make one change after another merely to…
The Factory Method Pattern
I get it; Design Patterns take time to understand. It took me…
The Financial Double-Record Anti-Pattern
I find it fascinating when encountering a software design anti-pattern,…
The Chain Of Responsibility Design Pattern
Chain of Responsibility
Chain of Responsibility is a behavioural…
What Is A Use Case?
What is the essential part of a computer system?Answer: The…