Любой дурак может написать код, понятный компьютеру. Хорошие программисты пишут код, понятный людям.

  • Написание чистого кода — это не что иное, как код, который легче читать, изменять и рефакторить для людей, отличных от исходного программиста.
  • Код должен легко читаться, независимо от того, является ли этот читатель первоначальным автором кода или кем-то другим. Не должно быть никаких сомнений и недоразумений.
  • Такие вещи, как поток приложений, цель каждой функции/класса/переменной/выражения и то, как взаимодействуют различные объекты, должны быть ясны.
  • Написание чистого кода имеет следующие преимущества:

Меньшая нагрузка на техническое обслуживание

Согласованность кода в команде

Улучшает читаемость кода

Советы по написанию чистого кода

  • Используйте осмысленные имена для переменных, функций и объектов.
// Don't
let a = 'kamesh sethupathi';
let b = '[email protected]';
function printIt() {
    console.log('Name', a);
    console.log('Email', b);
}

// Do
let name = 'kamesh sethupathi';
let email = '[email protected]';
function printUserInfo() {
    console.log('Name', name);
    console.log('Email', email);
}
  • Избегайте добавления ненужного контекста. Как user.userID, image.isValidImage(). Его можно упростить, как user.ID, image.isValid().
  • Никогда не программируйте никакие значения. Всегда используйте константы для этой цели.
// Don't
setInterval(pingServer, 10 * 1000);

// Do
const SERVER_PING_INTERVAL = 10 * 1000; // const file
setInterval(pingServer, SERVER_PING_INTERVAL);
  • Использовать значения по умолчанию для аргументов
// Don't
function printAllFilesInDirectory(dir) {
  const directory = dir || "./";
  //   ...
}

// Do
function printAllFilesInDirectory(dir = "./") {
  // ...
}
  • Только комментировать бизнес-логику
  • Отдавайте предпочтение литералам объектов или картам, а не операторам switch/лестнице If-else.
// Don't
if(user == 'admin') {
    console.log('You have full potential');
} else if( user == 'editor') {
    console.log('You can publish, review, and access the page');
}  else if( user == 'author') {
    console.log('You can publish and access the page');
}

// Do
let permissions = {
    admin: 'You have full potential',
    editor: 'You can publish, review, and access the page',
    author: 'You can publish and access the page'
};
console.log( permissions[user] );
  • Используйте сокращения, когда это возможно
  • Используйте неотрицательные условные операторы. Например, предпочесть isValidUser isNotValidUser().
  • Не повторяйся (СУХОЙ)
// Don't
function addTwoNumbers(a, b) {
    console.log(a + b);
}
function addThreeNumbers(a, b, c) {
    console.log(a + b + c);
}

// Do
function addNumbers(...args) {
    console.log( args.reduce((prev, cur)=> prev+cur,0) );
}
  • Избегайте использования флагов в качестве аргументов. Например, isPublished в качестве аргумента.
  • Избегайте выполнения нескольких действий в функции. Функция должна выполнять одно действие, для которого предназначена.

Linkedin: https://www.linkedin.com/in/kameshsethupathi