The Boy Scout Rule

The Boy Scout Rule can be summarized as: Leave your code better than you found it. Essentially, it means to leave our code a little better than how we found...

Understand the Three Laws of TDD

Uncle Bob described TDD with three rules in his article The Three Laws of TDD. These laws lock a developer into a cycle that is short but is very crucial...

Liskov Substitution Principle

In this article, we will see the Liskov Substitution Principle (LSP), which is the “L” in the SOLID principles. “Subtype Requirement: Let φ(x) be a property provable about objects x...

Dependency Inversion Principle

In this article, we will see the Dependency Inversion Principle (DIP), which is the “D” in the SOLID principles. “The Dependency Inversion Principle (DIP) states that High-level modules should not...

Single Responsibility Principle

In this article, we will see the Single Responsibility Principle (SRP), which is the “S” in the SOLID principles. “The Single Responsibility Principle (SRP) states that each software module should...

Open/ Closed Principle

In this article, we will see the Open/ Closed Principle (OCP), which is the “O” in the SOLID principles. The Open/ Closed Principle (OCP) states that “software entities (classes, modules,...

Interface Segregation Principle

In this article, we will see the Interface Segregation Principle (ISP), which is the “I” in the SOLID principles. “Clients should not be forced to depend upon interfaces that they...

Avoid Null

How to prevent the famous NullPointerExceptions in Java? This is one of the most important questions for every Java developer to ask independently of their level of expertise. I call...

Red Green Refactoring

To execute Test-Driven Development (TDD) properly we need to learn its key methodology Red, Green, and Refactor (RGR). This method consists of 3 phases that are repeated continuously: Red, Green,...

Docker 103 - Understand Dockerfile Volume

In this article, we’ll learn how to create a Docker image using Dockerfile and volumes, and we will see why we should not declare Docker or host path volumes in...