인간 친화적

기계가 코드를 실행하는 동안 기계는 우리가 작성하는 유일한 대상 또는 핵심 대상이 아닙니다. 우리가 만드는 코드는 다른 개발자가 쉽게 확장하고 유지 관리할 수 있어야 합니다. 그 개발자가 타자인지, 미래의 자신인지.

나는 이런 사고방식을 인간 친화적이라고 부른다.

Human Friendly Code is nice to read, easy to understand, and feels safe to change.



이 기사에서는 이 접근 방식을 구현하는 네 가지 간단한 방법을 살펴보겠습니다.

설명 변수 도입



코드 중복을 피하거나 코드를 보다 표현력 있게 만들려면 변수 도입을 고려하십시오. 대부분의 경우 점유할 추가 메모리 비트에 대해 걱정할 필요가 없습니다.

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
}


일관된 이름 지정



일반적으로 따라하기 쉬운 코드를 목표로 해야 하므로 엔터티의 이름을 유지해야 합니다. 다음 스니펫은 나쁜 예를 보여줍니다. userclient가 같은 것인지 확실하지 않습니다.

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]
}


이것이 제가 여러분과 공유하고 싶었던 인간 친화적인 코드를 만드는 데 대한 네 가지 통찰력입니다. 아직 하지 않았다면 한 번에 모든 것을 따를 필요가 없습니다. 가장 마음에 드는 아이디어를 선택하고 어떻게 진행되는지 확인하세요.

시간 내주셔서 감사합니다 🦊
개체 필수

좋은 웹페이지 즐겨찾기