ES6 донесе невероятна функционалност и подобрения, които могат да ви спестят време. Освен това улеснява писането на по-функционален код и подобрява преносимостта на кода. Рискът, който поемаме с всички тези подобрения, е, че можем да забравим да направим нашия код четим и поддържаем. Това не е нов проблем. Правим нещата по-сложни, като използваме анонимни функции, когато не трябва, пропускаме да документираме кода си и добавяме коментари и не организираме кода си по разбираем начин.

Анонимни функции

Анонимните функции са полезни, когато не е необходимо да използвате повторно функция. Обикновено ги използваме заедно с обещания и масивни методи, но дори и да възнамеряваме да ги използваме само веднъж, пак губим известна четливост.

Вземете например тази функция със стрелка:

let numberArray = [1,2,3,4];
let newNumberArray = numberArray.map((v,i) => {
    var ni = i+1 >= numberArray.length ? 0 : i+1;
    return v+numberArray[ni];
});

Тъй като функцията не е именувана, губим част от контекста. Дори ако я използваме само веднъж, би било полезно, ако функцията е именувана:

let numberArray = [1,2,3,4];
let addNextIndex = (v,i) => {
    var ni = i+1 >= numberArray.length ? 0 : i+1;
    return v+numberArray[ni];
}
let newNumberArray = numberArray.map(addNextIndex);

Сега можем да кажем, че добавяме текущото число към следващото число, докато итерираме през масива.

Именуване на променливи

Последният пример все още не беше най-добрият. Никой не знае наистина, без да се рови какво е v или i или ni. Тези имена на променливи не биха били това, което бих считал за четливо. На аматьорския разработчик ще му отнеме 10 минути, за да потърси какво map използва като свои параметри и да разбере факта, че ni е сумата от текущата стойност плюс тази на следващия индекс (или първия индекс, ако текущият индекс е последно в масива). Можем да подобрим това:

let numberArray = [1,2,3,4];
let addNextIndex = (value,index) => {
    var nextIndex = index+1 >= numberArray.length ? 0 : index+1;
    return value+numberArray[nextIndex];
}
let newNumberArray = numberArray.map(addNextIndex);

Това е много по-добре. Сега повечето разработчици биха могли да разберат какво се случва. Все пак има още нещо, което можем да направим, за да го подобрим.

Коментари

В една от моите работни места обсъждахме стандарти и най-добри практики и се появи темата за коментиране. За моя изненада се появи мнение, което не очаквах. Разработчикът заяви, че кодът му е „самокоментиращ“ и не се нуждае от коментари в кода си. Бях объркан, защото винаги съм виждал стойността на кода за коментиране, не винаги съм бил добър в това и обикновено това е последното нещо, което правя, но напълно да го игнорирам беше шок за мен. Точните коментари на правилното място могат да бъдат много полезни, твърде много коментари на твърде много места могат да имат обратен ефект. Виждал съм и двете, най-добрият начин, който знам, е да направите всичко възможно, за да направите кода си четим и след това да попълните празните полета с коментари:

let numberArray = [1,2,3,4];
let addNextIndex = (value,index) => {
    // Get the next index of the array, or the first if index is the last
    var nextIndex = index+1 >= numberArray.length ? 0 : index+1;
    return value+numberArray[nextIndex];
}
let newNumberArray = numberArray.map(addNextIndex);

Един прост коментар може да помогне много.

Организация

Това е изключително важна стъпка в превръщането на кода в четим. Този проблем може да възникне в много форми. Нямам пример за споделяне тук, но ето някои насоки, които следвам:

  • Не се страхувайте да създавате файлове: Файловете са отлични начини за разделяне на кода и поддържане на четимост.
  • Използвайте много функции:Една функция, която прави много неща, винаги е ПО-МАЛКО за предпочитане пред много функции. Това ще доведе до повече модулност и четливост.
  • Организиране на папки и файлове:Разделете файловете в папки, които имат смисъл. Създаването на групи за сървър, клиент, компоненти и разпространение ще ви помогне да поддържате проекта си. След като намерите методология, която се придържате към нея, това ще ви помогне да запомните къде са нещата и ще помогне да обучите тези, които идват след вас.

Бъдете прости, глупави

И накрая, последният съвет, който трябва да се боря с обфускацията, е да го опростя. Открих, че когато нещата станат наистина сложни и пиша хиляди редове код за един проблем, обикновено го правя погрешно. През повечето време има просто решение, което отнема част от кода.