Design Patterns & Refactoring
![](/images/content-public/index-hello-robot.jpg)
Hello, world!
I'm SourceMaking. I will tell you a lot of stories about good software architecture and teach you how to create it with design patterns. I will guide you through anti-patterns, common pitfalls and mistakes that people make when they plan, create, and manage software projects. In the end, I will teach you how to smell a bad code and improve it with refactoring.
We can start from the very beginning or you can pick a topic of interest below.
![](/files/v2/content/home-tb1.png)
![](/files/v2/content/home-t1.png)
Design Patterns
Patterns are higher-order designs, which occur repeatedly in object-oriented design. They have been formalized, and are generally considered a good development practice.
![](/files/v2/content/home-tb2.png)
![](/files/v2/content/home-t2.png)
Antipatterns
Antipatterns describe common mistakes, errors, and people issues that can cause a software project to fail.
![](/files/v2/content/home-tb3.jpg)
![](/files/v2/content/home-t3.png)
Refactoring
Refactoring is a disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior.
![](/files/v2/content/home-tb4.png)
UML
Unified Modeling Language makes it possible to describe systems with words and pictures. Especially notable use case diagrams with their stick figures or the widely used class diagrams.