Software principles

Anti Patterns

Software design patterns are very important for long-term projects. Each pattern can contribute in its way, sure, but were all the patterns born equal? Some practices are considered better than others.  best practice is a method or technique that has been generally accepted as superior to any alternatives because it produces results that are superior to… Continue reading Anti Patterns

Software principles

Guardians Of The Program

Let's say we have a special chef robot in a restaurant which can cook a variety of meals for customers. It has a function who's responsible for cooking a meal called cook: class Chef: def __init__(self, name): print(f"Chef name: {name}") def cook(self, meal): pass While meal is defined as: class Meal: def __init__(self, mealId): print(f"Initializing… Continue reading Guardians Of The Program

Software principles

Creating A SOLID Software (part 2)

This post is a part of the software design principles posts. Let's talk about SOLID. From Wikipedia: SOLID is an acronym for five design principles intended to make software designs more understandable, flexible and maintainable. The principles are a subset of many principles promoted by American software engineer and instructor Robert C. Martin.  Here are the five SOLID principles: Single… Continue reading Creating A SOLID Software (part 2)

Software principles

Creating A SOLID Software (part 1)

This post is a part of the software design principles posts. Let's talk about SOLID. From Wikipedia: SOLID is an acronym for five design principles intended to make software designs more understandable, flexible and maintainable. The principles are a subset of many principles promoted by American software engineer and instructor Robert C. Martin.  Here are the five SOLID principles: Single… Continue reading Creating A SOLID Software (part 1)

Software principles

Software Design Principles

When we write some code for new/exiting software we can do it in several ways: Quick and dirty (usually for POC/Demonstration purposes) Over-engineered (can be related to lack of experience or unclear product specification) Maintainable flexible clear code (usually this is what we want) Sometimes we have multiple ways in one project. There are a… Continue reading Software Design Principles