Posts with topic: Design+Architecture

Why you should care about include dependencies in C/C++ and how to keep them at a minimum

When we think of dependencies, we usually think of “logical dependencies” at first: logical relations between classes, functions etc. Object oriented design, generic programming, encapsulation, design patterns are aimed to cut this “logical dependencies”. But there are also compile time dependencies - dependencies between files and libraries at compile time. This article is on include dependencies in C/C++ what are a sort of compile time dependencies. This dependencies have a huge impact on building, refactoring, testing and on the structure of your software.
→ Read More

Why I wouldn't use a dynamically typed language for large applications

Currently I’m developing for and maintaining a large code base that’s a mix of C++ and Python code. In this article I write about my experience about the type systems of statically typed C++ and dynamically typed Python, especially about the situations where I miss the explicit type information in dynamically typed languages. I use Python as synonym for dynamically typed languages because my experiences with python should also apply for other dynamically typed languages.
→ Read More

Implementing undo/redo with the Command Pattern

This article is about implementing undo/redo functionality by utilizing the command pattern and assumes you know how the command pattern works (for a refresher on the command pattern you might take a look at this). To summarize, the command pattern is about representing and encapsulating all information that is needed to execute an action at a later time. Usually a command is an object that provides an interface execute(), which wraps the execution of the desired action.
→ Read More