4. Общие правила

4. Общие правила

4.1. Пакетный менеджер (npm, yarn, pnpm)

❗В проекте должен быть только 1 пакетный менеджер

4.2. Переменные (const, let, var) (opens in a new tab)

  • Для объявления переменных всегда используйте const или let.
  • По умолчанию используйте const, если только переменную не нужно переназначить.
  • ❗Никогда не используйте var.

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

❗ Избегайте большого количества аргументов. Если больше 2-х аргументов, то объединяем их в объект

// ❌
const createTodolist1 = (id: string, title: string, author: string) => {
  // code
}
 
// ✅
const createTodolist2 = (todo: Todo) => {
  const { id, title, author } = todo
  // code
}

4.4. Утилитные функции (utils, helpers)

  • Если утилитная функция используется во многих местах проектах, то выносим ее в common/utils
  • Если функция необходима чтобы не замогрождать логику компонента, то кладем ее рядом с компонентой / фичей (в зависимости от структуры папок в приложении)
  • Желательно покрывать логику утилит тестами

4.5. Утилитные функции, кастомные хуки и т.д. дробим на несколько файлов, т.е. не создаем файл utils куда все складываем

utils.ts
// ❌
export const handleServerAppError = () => {}
export const handleServerNetworkError = () => {}
handleServerAppError.ts
// ✅
export const handleServerAppError = () => {}
handleServerNetworkError.ts
// ✅
export const handleServerNetworkError = () => {}

4.6. Однострочный метод

⚡ Однострочный метод должен выглядеть так же как и обычный метод

Когда в теле функции несколько строк кода, тогда все однозначно. Пишем вот так

if (a> 10) {
  // code 1
  // code 2
  // code 3
}

Разногласия возникают, когда в теле функции одна строка кода. Смотри примеры ниже

example1
// ❌
if (a>10) code 1
 
// ✅
if (a>10) {
  // code 1
}
example2
// ❌
const deletedTodosArray = produce(todosArray, draft => {
    const index = draft.findIndex(todo => todo.id === "id1")
    if (index !== -1) draft.splice(index, 1)
})
 
// ✅
const deletedTodosArray = produce(todosArray, draft => {
    const index = draft.findIndex(todo => todo.id === "id1")
    if (index !== -1) {
      draft.splice(index, 1)
    }
})