The code has lots of comments. Comments are coupled to implementation and hardly maintained.
> TL;DR: Leave comments just for important design decisions. Don't explain the obvious.
Problems
Maintainability
Obsolete Documentation
Readability
D...
When bad configuration kills all internet proxies
> TL;DR: Overly large auto-generated config can crash your system.
Problems
Config overload
Hardcodedhttps://coderlegion.com/7475/code-smell-02-constants-and-magic-numbers limit
Lack of validati...
Too much parsing, exploding, regex, strcmp, strpos and string manipulation functions.
> TL;DR: Use real abstractions and real objects instead of accidental string manipulation.
Problems
Complexity
Readability
Maintainability
Lack of abstracti...
Humans get bored after line five.
> TL;DR: Refactor and extract functions longer than five lines.
Problems
Low cohesion
High coupling
Hard to read
Low reusability
Solutions
1 Refactorhttps://maximilianocontieri.com/refactoring-010-extract-...
A method makes calculations with lots of numbers without describing their semantics
> TL;DR: Avoid Magic numbers without explanation. You don't know their source and are very afraid of changing them.
Problems
Couplinghttps://coderlegion.com/6634...
Your objects have no behavior.
> TL;DR: Don't use objects as data structures
Problems
Lack of encapsulation
No mappinghttps://coderlegion.com/6313/just-follow-this-design-principle to real-world entities
Duplicated Code
Couplinghttps://coderle...
Failure to program in the 1950s had dire consequences. Machine time was costly. Jumping from punch cards to the compiler and then to execution could take hours or even days. Luckily, those times are long gone. Are they?
> TL;DR: Fail fast. Don't hid...
Allowed global variables and supposed memory savings.
> TL;DR: Don't ever user Singletons
For 20 years I have been teaching software at the University of Buenos Aires. In the software engineering course we teach design patterns and the same "scheme...
Index articles on software design
> TL;DR: This is an index to already published articles on software design.
Some rules must be followed and embraced to create great software designs.
This article summarizes them, serving as an index to full sto...
Since the very beginning of the stored-program concept, we learned that software is Programs + Data. Without data there is no software.
> TL;DR: Favor immutable objects
In object-oriented programming we build models that evolve, emulating the knowl...
A root cause analysis of all failures of our software will find a single culprit with multiple costumes.
> TL;DR: Why you should address coupling now
The enemy is always there. Many times disguised as laziness, sometimes simplification, and usually...
He is not your friend. It does not simplify life or make you more efficient. Just more lazy. It is time to stop using null
> TL;DR: The simple mistake that is causing a lot of problems.
Tearing Down Another Inveteracy
You have been heavily using n...
Let's name things the right way
> TL;DR: We need to stop the bugs
According to Wikipedia:
> A software bug is an error, flaw or fault in a computer program or system that causes it to produce an incorrect or unexpected result, or to behave in unin...
The One and Only Software Design Principle
!The One and Only Software Design Principlemodel.png
If we build our entire paradigm on a single rule, we can keep it simple and make excellent models.
> TL;DR: Just follow this design principle
Being m...
What is wrong with software?
Software is eating the world. If you work, live, and love software, you usually do not stop to think about its meaning
> TL;DR: Current software design problems addressed in a minimalist way.
In university and industr...