Чистый код

Признаки чистого кода

  • простота и понятность;
  • корректность;
  • расширяемость;
  • универсальность.

Признаки плохого кода

  • жесткость;
  • хрупкость;
  • неподвижность;
  • вязкость.

Именование

Английский язык

const пользователь = {};

function obnovlenieDannykh(dannye) {
    ...
};

const user= {};

function updateData(data) {
    ...
};

Говорящие названия

const myObject = {
    name: 'Вася'
};

const paramAboutValidity = true;

const building = {
    hasBuildingMoreThanOneElevators: true    
};


function ninjaFunction() {
    return ninja;
}

function userProfileParams(params) {
  user.profile.params = params;
}
const user = {
    name: 'Вася'
};

const isFieldValid = true;

const building = {
    hasManyElevators: true    
};


function getNinja() {
    return ninja;
}

function updateUserProfile(params) {
    user.profile.params = params;
}

Правила

Аргументы функции

function generateModal(
    title, body, footer, hasCloseButton
) {
  ...
};
function generateModal(
    content, hasCloseButton
) {
  ...
};

generateModal({
  title: 'Заголовок',
  body: 'Основное сожержимое',
  footer: 'Контактная информация'
}, true);

Одна функция — одна задача

function getUser() {
  user.id = counter + 1;
  return user;
};
function getUser() {
  return user;
};

function setUserId() {
  user.id = counter + 1;
}

Дублирование кода

function addAdmin(person) {
  const name = person.getName();
  const age = person.getAge();
  const email = person.getEmail();

  const admin = {
    name,
    age,
    email
  };

  createNewUser(admin);
};

function addManager(person) {
  const name = person.getName();
  const age = person.getAge();
  const phone = person.getPhone();

  const manager = {
    name,
    age,
    phone
  };

  createNewUser(manager);
};
function addPerson(person) {
  const name = person.getName();
  const age = person.getAge();

  const data = {
    name,
    age
  };

  switch (person.type) {
      case 'admin':
        data.email = person.getEmail();
        break;
      case 'manager':
        data.phone = person.getPhone();
        break;
    }

  createNewUser(data);
};

Негативные условия

function isComponentNotHidden() {
  ...
};

if (!isComponentNotHidden()) {
  ...
}
function isComponentHidden() {
  ...
};

if (isComponentHidden()) {
  ...
}

Неиспользуемый код

// function superOldUserUpdate() {
//   ...
// };

function oldUserUpdate() {
  ...
};

function newUserUpdate() {
  ...
};
function userUpdate() {
  ...
};

Clean code javascript

Made with Slides.com