What is Domain Driven Design? Domain-driven design (DDD) is a software design approach that focuses on modeling software by matching a specific area of the business, called domain. In this approach, as the name suggest, the domain is the “center of gravity”, and everything else orbits around it. The domain is typically divided into subdomains, which are smaller, more focused areas of the domain. Let’s consider a hypothetical e-commerce application as an example:...
Algorithm complexity
Algorithm complexity is a crucial concept in computer science that helps us analyze the efficiency of algorithms. Whether you’re a budding programmer or a seasoned developer, understanding algorithm complexity is essential for writing efficient and scalable code. In this blog post, we’ll explore the basics of algorithm complexity and guide you through the process of calculating it. What is Algorithm Complexity? Algorithm complexity is a measure of the efficiency of an algorithm in terms of the resources it consumes....
Hexagonal (Ports and Adapters) Architecture
In the realm of software architecture, various design patterns and principles aim to enhance the flexibility, maintainability, and scalability of applications. One such pattern that has gained prominence is the Hexagonal Architecture, also known as Ports and Adapters. This architectural style, introduced by Alistair Cockburn in 2005, provides a clean separation between the core business logic of an application and its external dependencies, such as the user interface, database, and external systems....
Trunk-based development - TBD
Trunk-based development (TBD) is a software development workflow that emphasizes frequent, small commits to a single codebase branch, called trunk or main branch. In TBD, developers works and push their changes directly into the trunk branch, or create short-lived feature branches that are merged back into the trunk frequently. This helps to keep the trunk branch up-to-date and ready for deployment at any time. This is in contrast with other branching models, such as Git Flow, which uses multiple long-lived branches for different purposes (such as development/staging/production and releases)....
Basics of OOP design - SOLID principles
SOLID is an acronym for five object-oriented design principles used to design software that is robust, testable, extensible, and maintainable. These design principles are: Single Responsibility Principle (SRP) Open-closed Principle (OCP) Liskov substitution principle (LSP) Interface segregation principle (ISP) Dependency inversion principle (DIP) Single Responsibility Principle (SRP) A class should have one, and only one, reason to change Each module should perform a single task or function, and should be responsible for that task only....