Dynamic/Static & Interpreted/Compiled

06 August 2019

What is a type? Programming languages can be classified as dynamic or statically typed and interpreted or compiled. But first we need to fully understand what is a type? A type describes the kind of data that is stored in memory, and only specific operations (mathematical, relational, logical etc) are...

Interface Segregation

07 July 2019

4 | The Interface Segregation Principle The Interface Segregation Principle states the following: No client should be forced to depend on methods it does not use. This can be explained to mean the following - do not add new methods, with additional functionality to an existing interface if they are...

Dependency Inversion

05 July 2019

5 | The Dependency Inversion Principle To understand this principle, we first need to know - what is a dependency? Consider two objects A and B. Let’s say A is dependent on B. This means that in order for A to be successful and perform the job it is designed...

Liskov Substitution

24 June 2019

3 | The Liskov Substitution Principle Barbara Liskov and Jeannette Wing described the principle in their 1994 paper, A Behavioral Notation of Subtyping as follows: Let 𝝓(x) be a property provable about objects x of type T. Then 𝝓(y) should be true for objects y of type S where S...

Examining the S & O of SOLID

10 June 2019

This post is about the first two principles of the SOLID acronym. So what is SOLID? The five principles were first conceptualized by Robert C. Martin in 2000. Later on Michael Feathers defined these concepts into an easy to remember acronym - SOLID: Single Responsibility Open/Closed Liskov Substitution Interface Segregation...

Becoming an 8th Light Apprentice

24 May 2019

Having successfully completed Code Platoon, I am now completing my second week at 8th Light! I’ve been tasked with learning my first strongly typed language - C#. After getting the .NET Core SDK installed to use with Visual Studio Code, and completing a quick “Hello World”, I started working through...