As a software engineer/developer we have to give build our applications/programs faster as possible because so the users can use the applications fast as possible. Usually in this hurry we anyhow make the application working for that for current time but in this rush we write some code that fucks our mind later and makes difficult to make project scalable for long-term. It creates more problem than it solves.
An antipattern is just like a pattern, except that instead of a solution, it gives something that looks superficially like a solution but isn’t one. - Andrew Koenig
In this article, we will discuss some of anti-pattern practice which makes chaos everywhere in project. Later Project Become difficulty to maintain and other developer might find code difficult to understand.
Spaghetti
Spaghetti is fancier term when the code is unstructured and difficult to understand.This wastes time and energy in finding bugs, and fix them is harder because code has not proper defined structure.
void main() {
String name = getName();
greetUser(name);
int num1 = getNumber("first");
int num2 = getNumber("second");
int sum = addNumbers(num1, num2);
print("The sum of $num1 and $num2 is: $sum");
int product = multiplyNumbers(num1, num2);
print("The product of $num1 and $num2 is: $product");
}
String getName() {
print("Enter your name:");
return readInput();
}
void greetUser(String name) {
print("Hello, $name!");
}
int getNumber(String ordinal) {
print("Enter the $ordinal number:");
return int.parse(readInput());
}
int addNumbers(int a, int b) {
return a + b;
}
int multiplyNumbers(int a, int b) {
return a * b;
}
String readInput() {
return stdin.readLineSync()!;
}
This how you can follow Spaghetti Pattern in Your Code.
Golden Hammer
Example You have a toolbox where you have hammer, screwdriver, wrench. Each Tool is best for it's own specific work.Now, the hammer is gold platted, it so shinny so you want to use hammer more, like you're attach to hammer.So for everything you hammer because it looks cool.
Each tool perform best in own area. Not using suitable tool for specific task and using tool which you like no matter it perform well or not. It is Golden Hammer Pattern.
It is like using Javascript for Everything like Frontend, Backend, Mobile Development,AI and embedded systems.
Lava Flow
This occurs when the code that is no longer use is present in source code. This leads to unnecessary complexity because, developer don't know whether code is used some where else in codebase. Refactoring code can reduce this. It also Leads to performance issue in application.
Unnecessary Complexity
When Solution for Problem is simple but developer want to flex his skills with writing complexly (Over Engineering). Usually this occur because of lack of experience and not focus on simplicity.
God Class
It occurs when a class does multiple things(Like God), resulting tight coupling and decrease maintainability. It has too many responsibilities and violates single responsibility principle of object oriented programming.
For example a single class , handling authentication of user and handling user blogs, profiles etc.
These are few anti-patterns which developer do in their codebase and this should avoid or face the consequences of it.