Low Coupling and High Cohesion

I have known, for almost as long as I’ve been coding (two years), that coupling and cohesion are two very important concepts in software design. To be specific, low coupling and high cohesion *. I’ve known this, and yet, I don’t…

Using a seam to test legacy code

This post is about working with legacy code and specifically creating a seam as a technique to more easily test that code. I encountered the technique during the refactoring week of the Codurance Apprenticeship program.

So what is legacy code? Ask…

Dependency Inversion Principle

This blog entry is the fifth and final in a series of lightning talk style posts about each of the SOLID Design Principles for object-oriented software.

The Dependency Inversion Principle (DIP), as it is known, is primarily concerned with…

Interface Segregation Principle

This blog entry is the fourth in a series of lightning talk style posts about each of the SOLID Design Principles for object-oriented software.

Robert C. Martin (Uncle Bob) defined the interface-segregation principle (ISP) whilst working with Xerox…

Liskov Substitution Principle

This blog entry is the third in a series of lightning talk style posts about each of the SOLID Design Principles for object-oriented software.

First introduced by Barbara Liskov, in a 1987 conference keynote address titled Data abstraction and…

Open/Closed Principle

This blog entry is the second in a series of lightning talk style posts about each of the SOLID Design Principles for object-oriented software.

The Open/Closed Principle was first defined by Robert C. Martin, and was built on top of the work done…

Single Responsibility Principle

This blog entry will be the first in a series of lightning posts about each of the SOLID Design Principles for object-oriented software. First identified by Robert C. Martin (Uncle Bob) in a 2000 paper, these designs, if applied, produce a more…

TDD with the Transformation Priority Premise

Test-Driven Development is an easy concept that is much harder to do than it seems on the surface. The difficulty lies in it’s simplicity. Only through intentional practice, application and experience can we, as developers, come to recognize…

🎉 Hello World 🎉

This being my first post I thought it prudent to begin with a short introduction of who the heck am I and what do I think I know about Software Engineering.

Well, to answer the first question, I am David Halewood and I am currently a day away from…