"If it stinks, change it"
A code smell is a piece of code that goes against good practices or fundamental design principles and therefore negatively impacts the quality of our solution.
Here is a list of code smells and how to solve them:
1) Long Method Implementation
Methods that make you scroll just to get an idea of what is happening?
You are most probably missing some abstractions and decomposition. Delegate responsibilities to corresponding objects/classes and create smaller methods that make sense together.
2) The Bazooka (Contrive Complexity if you like fancy)
When using over complicated and complex designs for tiny problems. Always look for the best-suited design and implementation to solve the problem. The solution isn´t better because you have 10 classes and 2 patterns together.
3) Long Parameter List
Have you seen those signatures with 8+ params?
You are missing an object in most cases
The interface is a contract and having it all over the place & distributed isnt maintainable/scalable
Create the missing abstraction and more responsibilities will appear
4) Duplicated Code
This is the most typical and easy to spot. Do not repeat yourself. As soon as you find yourself copy/pasting the code stop and encapsulate it in a commonplace.
It can be done using delegation inside a class, composition with another class or inheritance.
5) Misplaced Methods
Avoid secretary methods where you add layers of calls when it is not necessary. Also applies to logic pertinent to another object being encapsulated in the user of said object.
Remove secretary methods. Relocate code to the pertinent class.
6) God Class
Having a class with too many responsibilities. It knows too many objects, has too many interfaces and every change impacts it.
The solution is not trivial, you probably are missing a redesign, a pattern, or extra classes.
The way to solve these and more code smells is to refactor your solutions. Which is a great topic for another thread or an article. Let me know if you liked this and I will work on that soon enough ;)!
Thanks for reading and keep your code clean without smells
• • •
Missing some Tweet in this thread? You can try to
force a refresh
If you are tired of breaking environments or you keep hearing about DevOps but have no idea what that is...
Then this thread is for you!
Let's talk about CI/CD!
This is the ninth thread of the series: Interview Preparation!
🧵THREAD🧵
First, let's get some definitions down.
CI = Continuous Integration
CD = Continuous Delivery / Continuos Deployment
DevOps = Combination of practices of Software Development (Dev) and IT Operations (Ops)
Let's tackle these concepts and it¿s tools and practices
⬇️
CI/CD is a set of principles and practices to deliver code changes more frequently and reliably
It is one of the best practices for both DevOps teams and agile methodologies, as it goes hand in hand with their objectives:
- Focus on business value
- Code quality
- Automation
Most of the systems you will build in your life will need some form of persistence.
That is why when preparing for an interview you should be ready to talk about Databases
This is the eighth thread of the series: Interview Preparation!
🧵THREAD🧵
First, let's get some definitions down.
A Database is an organized collection of data.
A Database Management System (DBMS) is a software for users to define, create, maintain & control access to the DB.
You will also need a language to program and design your DB objects.
⬇️
There are very different types of Databases & also a lot of possible classifications.
I would say the most useful one is:
- SQL
- NoSQL
We are going to focus only on SQL Databases in this thread.
If you are thinking about FAANG companies or similar this is probably the most important topic. Otherwise, this is still a big topic to cover but don't neglect the others
We will cover a roadmap for Algorithms & Data Structures
⬇️
First let's talk about some easy problems that are widely used in interviews, make sure to be able to solve them.
Read each of them and think of the solution now...
If you can't figure them, search on youtube, there are plenty of videos explaining and solving them.
Javascript is a programming language, the one native for web browsers, and one of the most used in the world.
It allows you to create a front end, back end (node), and even mobile with some magic in the middle. Let's go through the fundamentals that you should learn.
Now it's time to get into the specifics. Do you know how to build Front ends?
This is the 3rd Thread on the series of Interview Preparation
Let's get started!
🧵Thread 🧵
A quick note here: This will focus on web devfront end (some things apply to mobile too), but keep in mind if the position is backend developer, desktop developer, or other fields some things might not apply.
This would be the standard front end check for FullStack Web devs.
👇
First of all, you have to understand:
* What is the Web
* Server-client relationship
* How in the end our web browsers can only process HTML, CSS, and Javascript.