There are 5 Essential Steps to be followed for Writing a Clean code in Javascript
1. Use meaningful and descriptive variable and function names :
This makes the code more readable and understandable
Here's an example of how to use meaningful and descriptive variable and function names
// Bad naming
let x = "John Doe";
function y(a,b) {
return a + b;
}
// Good naming
let userName = "John Doe";
function addNumbers(num1, num2) {
return num1 + num2;
}
In the first example, the variable x
and the function y
do not give any indication of what they are used for. In contrast, the variable userName
and the function addNumbers
have descriptive names that make it clear what they represent and what they do. This makes the code more readable and understandable for other developers who may need to work with it late
2. Use consistent indentation and formatting
This helps to make the code more visually appealing and easier to scan
This sounds to you a basic Thing but many beginners make mistakes.
Here's an example of how to use consistent indentation and formatting in JavaScript.
// Bad formatting
function calculateSum(a,b){
let result=a+b;
return result;
}
// Good formatting
function calculateSum(a, b) {
let result = a + b;
return result;
}
In the first example, the function calculateSum
does not have consistent indentation and formatting. The opening curly brace is not aligned with the function keyword and the body of the function is not indented. In contrast, the second example has consistent indentation and formatting, the opening curly brace is aligned with the function keyword and the body of the function is indented, making the code more visually appealing and easier to scan. This makes the code more readable and understandable for other developers who may need to work with it later.
Additionally, you can use tools like Prettier or ESLint to format your code automatically and maintain a consistent style throughout your project.
3.Use a linter
A linter is a tool that checks your code for errors and can enforce a consistent coding style.
Here's an example of how to use a linter, such as ESLint, in JavaScript:
Install ESLint: You can install ESLint globally on your machine by running the command
npm install eslint -g
or locally in your project by running the commandnpm install eslint --save-dev
.Configure ESLint: Create a file named
.eslintrc
in the root of your project and add your configuration rules to it. Here's an example configuration file:
{
"env": {
"browser": true,
"es6": true
},
"extends": "eslint:recommended",
"rules": {
"indent": ["error", 4],
"linebreak-style": ["error", "unix"],
"quotes": ["error", "double"],
"semi": ["error", "always"]
}
}
Run ESLint: Run the command
eslint filename.js
to lint a specific file oreslint path/to/directory
to lint all the files in a directory.Fix errors: ESLint will display any errors it finds in your code. You can fix them by yourself or use a plugin for your code editor that can automatically fix them for you.
By using a linter, you can find and fix errors in your code and enforce a consistent coding style throughout your project. This can make your code more predictable and easier to understand, and help you to catch and fix errors before they make it to production.
4.Use functional programming concepts
Functional programming concepts like immutability and pure functions can help to make your code more predictable and easier to test.
Here are a few examples of how to use functional programming concepts in JavaScript:
Immutability: Instead of modifying an existing object or array, create a new one with the desired changes.
// Bad let myArray = [1, 2, 3]; myArray[1] = 4; console.log(myArray); // [1, 4, 3] // Good let myArray = [1, 2, 3]; let newArray = [...myArray.slice(0, 1), 4, ...myArray.slice(2)]; console.log(newArray); // [1, 4, 3]
Pure Functions: Functions that do not have any side effects, meaning they only depend on their input and don't change any variables or state outside of their own scope.
// Bad let globalCounter = 0; function incrementCounter() { globalCounter++; } incrementCounter(); console.log(globalCounter); // 1 // Good function incrementCounter(counter) { return counter + 1; } let localCounter = 0; localCounter = incrementCounter(localCounter); console.log(localCounter); // 1
Higher-Order Functions: Functions that take other functions as arguments or return other functions as output
// Example const numbers = [1, 2, 3, 4, 5]; const double = number => number * 2; const doubledNumbers = numbers.map(double); console.log(doubledNumbers); // [2, 4, 6, 8, 10]
5.Use modules
Modules allow you to organize your code into small, reusable pieces, making it easier to understand and maintain
In javascript, modules are a way to organize and reuse code. There are two main ways to use modules in JavaScript:
Using the
module.exports
andrequire()
in Node.js// math.js function add(a, b) { return a + b; } function subtract(a, b) { return a - b; } module.exports = { add: add, subtract: subtract };
// main.js const math = require('./math.js'); console.log(math.add(1, 2)); // 3 console.log(math.subtract(3, 2)); // 1
Using the
export
andimport
keywords in ECMAScript 6:// math.js export function add(a, b) { return a + b; } export function subtract(a, b) { return a - b; }
// main.js import { add, subtract } from './math.js'; console.log(add(1, 2)); // 3 console.log(subtract(3, 2)); // 1
By using modules, you can organize your code into small, reusable pieces. This makes it easier to understand and maintain. Additionally, by using
export
andimport
ormodule.exports
andrequire()
you can control the visibility of the functions and variables, making it easy to separate the public and private parts of your code.It also helps in making the code more scalable and efficient as the code is divided into smaller chunks and only the required code is loaded at runtime.