Любой дурак может написать код, понятный компьютеру. Хорошие программисты пишут код, понятный людям.
- Написание чистого кода — это не что иное, как код, который легче читать, изменять и рефакторить для людей, отличных от исходного программиста.
- Код должен легко читаться, независимо от того, является ли этот читатель первоначальным автором кода или кем-то другим. Не должно быть никаких сомнений и недоразумений.
- Такие вещи, как поток приложений, цель каждой функции/класса/переменной/выражения и то, как взаимодействуют различные объекты, должны быть ясны.
- Написание чистого кода имеет следующие преимущества:
Меньшая нагрузка на техническое обслуживание
Согласованность кода в команде
Улучшает читаемость кода
Советы по написанию чистого кода
- Используйте осмысленные имена для переменных, функций и объектов.
// 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
в качестве аргумента. - Избегайте выполнения нескольких действий в функции. Функция должна выполнять одно действие, для которого предназначена.