Будьте дружелюбны к человеку

Хотя машины выполняют наш код, они не являются единственной или ключевой аудиторией, для которой мы пишем. Код, который мы создаем, должен легко расширяться и поддерживаться другими разработчиками. Будь то другие разработчики или просто ваше будущее «я».

Я называю этот образ мышления дружественным к человеку.

Дружественный к человеку код приятно читать, легко понимать и безопасно изменять.

В этой статье мы рассмотрим четыре простых способа реализации этого подхода.

Вводите поясняющие переменные

Рассмотрите возможность введения переменных, чтобы избежать дублирования кода или сделать ваш код более выразительным. В большинстве случаев нет необходимости беспокоиться о дополнительных битах памяти, которые они будут занимать.

function canEdit (user, document) {
  return (
    user.role === 'admin' ||
    user.role === 'editor' ||
    document.owner === user.id
  )
}

function betterCanEdit (user, document) {
  const isStaff = ['admin', 'editor'].includes(user.role)
  const isOwner = document.owner === user.id

  // The general idea is now expressed in a single statement ✅
  return isStaff || isOwner
}
Вход в полноэкранный режим Выход из полноэкранного режима

Соблюдайте последовательность именования

В целом, вы должны стремиться к тому, чтобы за кодом было легко следить, поэтому убедитесь, что ваши сущности сохраняют свои имена. Следующий фрагмент показывает плохой пример: неясно, являются ли user и client одним и тем же.

function verify (user) {
  return user.id > 0 &&
      user.name !== ''
}

function print (clients) {
  const data = clients.map(client => ({
    ...client,
    status: verify(client) // ❌ Clients suddenly turn into Users
  }))

  console.table(data)
}
Вход в полноэкранный режим Выход из полноэкранного режима

Избегайте неожиданного поведения

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


function shuffle (list) {
  return list.sort(() => Math.random() > 0.5) // ❌ Elements are sorted in-place
}

function betterShuffle (list) {
  return list
    .slice() // ✅ Make a shallow copy first
    .sort(() => Math.random() > 0.5)
}
Вход в полноэкранный режим Выход из полноэкранного режима

Используйте простые утверждения

Создание плотного и лаконичного кода может быть забавным занятием. Хотя результат может выглядеть круто, для его понимания другим потребуется больше времени и усилий.

const modules = {}

// ❌ We assign and return value in a single statement
function loadModule (name) {
  return modules[name] = modules[name] || loadModule(name)
}

// ✅ This code is straightforward and reads nicely from top to bottom
function betterLoadModule (name) {
  if (modules[name] === undefined) {
    modules[name] = loadModule(name)
  }
  return modules[name]
}
Вход в полноэкранный режим Выход из полноэкранного режима

Вот четыре совета по созданию дружественного к человеку кода, которыми я хотел с вами поделиться. Нет необходимости следовать всем сразу, если вы еще не следуете им. Просто выберите идею, которая вызывает у вас наибольший отклик, и посмотрите, что из этого выйдет.

Спасибо за ваше время 🦊
Требуется объект

Оцените статью
devanswers.ru
Добавить комментарий