Flip It and Reverse It The Dependency Inversion Principle is an object-oriented software design principle that easily has the most far-reaching implications across both the underlying code and overall architecture of a software application of all design principles. This post is part of a series on software design principles. As with all design principles, this … Continue reading Design Principles: Dependency Inversion Principle
Tag: software design principles
Design Principles: Interface Segregation Principle
Gotta Keep 'em Separated The unfortunately-named Interface Segregation Principle is an abstraction-level corollary to the Single Responsibility Principle. Like the SRP, this principle seeks to limit the burden on consumers and implementers by focusing the exposed API of an interface. This post is part of a series on software design principles. As with all design … Continue reading Design Principles: Interface Segregation Principle
Design Principles: Liskov Substitution Principle
Why Won't this CuboidCylinder Fit?!?! Like Bertrand Meyer's Open/Closed Principle, the Liskov Substitution Principle is an object-oriented software design principle that is unfortunately poorly understood within the industry. It seeks to deal with code quality issues arising for poor use of inheritance mechanisms in object-oriented languages. This post is part of a series on software … Continue reading Design Principles: Liskov Substitution Principle
Design Principles: Single Responsibility Principle
Laser-Focused Coding The Single Responsibility Principle is fairly self-explanatory: don't try to do more than one thing at a time. The goal is to improve cohesiveness of software by decoupling ill-suited components. Improving cohesion by reducing coupling may seem a bit counter-intuitive until you look at the meanings of those words from the perspective of … Continue reading Design Principles: Single Responsibility Principle
Design Principles: Open/Closed Principle
Object-Oriented Huh? The Open/Closed Principle is one of the least well-understood object-oriented software design principles in the industry. It deals primarily with one of the three fundamental pillars of object oriented design in an attempt to foster the creation of readily reusable code. This post is part of a series on software design principles. As … Continue reading Design Principles: Open/Closed Principle
Design Principles: Intro
It's More what You'd Call "Guidelines" than Actual Rules Unlike methodologies - which are entire, well-defined processes - and patterns - which are concrete, readily identifiable on sight, and reproducible on demand - principles are simply concepts that software engineers can use to guide how we write code, as opposed to what code we write. … Continue reading Design Principles: Intro
Software Design Philosophy Overview
Software Design Methodologies, Principles, Patterns, and Anti-Patterns This is an introductory post to a series on software design philosophy. Software design is tricky. There are a lot of moving parts to it, far beyond the basic concepts just writing code. During a recent conversation with some software engineer friends of mine, several of the higher-level … Continue reading Software Design Philosophy Overview

