Skip to content

Instantly share code, notes, and snippets.

@w3core
Last active May 6, 2020 08:27
Show Gist options
  • Save w3core/fc552c60f574fb12451e24539f205f66 to your computer and use it in GitHub Desktop.
Save w3core/fc552c60f574fb12451e24539f205f66 to your computer and use it in GitHub Desktop.
Как я пишу код

Как я пишу код

  1. Краткость - сестра таланта. Поэтому думаем больше, чтобы написать меньше.

  2. Пишем на ES6+ но не забываем, что это всё потом транспилируется в ES5. Некоторые конструкции после транспиляции становятся очень громоздкими. Возможно что-то лучше написать на ES5 более компактно.

  3. Если вы в скопе делаете больше одного прямого обращения к свойству/методу объекта или массива, то есть смысл его перед использованием определить в локальную переменную т.к. свойства не минифицируются. Так же это относится и другим повторяющимся значениям (зачем одно и то же значение писать дважды, если его можно вынести в константу).

function wrong (object) {
    this.innerHTML = object.article.author;
    setAuthor(object.article.author);
}

function correct (object) {
    const author = object?.article?.author;
    // or
    const { author='Unknown' } = object?.article || {};
    // or
    const { author } = object.article;

    this.innerHTML = author;
    setAuthor(author);
}
  1. Не стоит злоупотреблять не предопределёнными анонимными или стрелочными функциями (например map(e=>{}). Это приводит к утечкам памяти. В большинстве случаев функцию можно определить вне скопа и только передавать ссылку на одну и ту же функцию. Правда иногда всё таки приходится использовать функции высшего порядка, но старайтесь этого избегать.
// wrong
const fn = (array=[]) => array.map(({ a, b }) => a + b);

// correct
const sumProps = ({ a, b }) => a + b;
const fn = (array=[]) => array.map(sumProps);
  1. JavaScript сам по себе очень мощная штука. Просто не все умеют его готовить :)

  2. По возможности старайтесь не ссылаться в замыканиях на вложенные свойства объектов. Это тоже приводит к утечкам памяти.

  3. Старайтесь в момент анимации не обращаться даже к гетерам DOM нод (например offsetHeight), т.к. это инициирует непосредственно в браузере reflow элементов, что приводит к залипаниям.

  4. Избегайте анимацию элементов у которых есть прозрачность/альфа канал, размытие, тень или другие сложные стили. Это создаёт ощутимую нагрузку на процессор.

  5. В CSS нет такого свойства как float. Есть display:grid, display:flex, display:inline-block и много других.

  6. EM и FR это наше всё! PX используем только если меньше 2-х или если в конкретном случае ну никак без них не обойтись.

  7. В HTML стремимся к минимуму. Минимум вложенностей. Что вижу на на дизайне, то и рисую. Не нужно делать дополнительные враперы и холдеры если можно обойтись без них. В большинстве случаев вместо HTML элементов можно обойтись использованием CSS псевдо элементов :before и :after

  8. Если элемент дизайна может выглядеть чуть-чуть не так как нарисовано, но стилей скажем в 2 раза меньше, то лучше его сделать не точь в точь как на картинке, но зато он будет проще.

  9. Избегайте использование кастомных элементов форм на сколько это возможно. Лучше использовать нативный если это возможно.

  10. CSS селекторы должны быть точными. Нельзя вот так просто взять и написать в каком-то компоненте .title, т.к. в другом компоненте тоже может быть .title. А могут быть и вложенные компоненты. Поэтому должно быть .AwesomeComponent > .header > .title. BEM методология это конечно хорошо, но не для крупных проектов.

  11. Альфа канал для цвета можно задавать не только в rgba формате но и в hex. #0007 или #12345678

  12. Не используйте padding там, где нужен margin и наоборот.

  13. Во время имплементации чего либо, помните что потом, со временем эта функциональность будет точно расширяться или кто-то захочет чтобы это выглядело немного иначе. Поэтому нужно делать так, чтобы потом можно было что-то поменять изменив одну строчку кода а не переписывать по новому.

  14. Не нужно делать один большой монолитный кусок кода. Разбивайте логику на примитивы. Стремитесь к использованию канонов функционального программирования.

  15. WEB и не только разработка, это как ремонт в квартире - после 4-х или 5-ти переездов нужно делать ремонт. Видишь что там уже полная жопа, после пяти внесённых изменений по просьбе PO, значит надо сесть и переписать этот кусок.

хъ

  1. Смотри пункт 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment