[클린코드 JS] 06. 경계 다루기

Serin-B·2023년 6월 27일
0

클린코드JS

목록 보기
6/15
post-thumbnail

이상(>=)과 초과(>), 이하(<=)와 미만(<)의 차이.
사소해 보이지만, 결코 사소하지 않은 경계에 대해 정리해보고자 한다.

상수로 경계 관리하기

상수(常數, constant)란 수식에서 변하지 않는 값을 뜻한다. 경계를 상수로 관리하는 것은 실수할 여지를 줄여주고, 추후 유지 보수를 용이하게 한다. 상수는 보통 대문자 snake case 로 선언한다.

const MAX_NUMBER = 100
const MIN_NUMBER = 5

⊕ 여러번 사용 될 것 같은 경계의 조건은 변수로 선언하는 것도 좋다. +1과 같은 조건은 누락되기 쉽기 때문이다. 이러한 휴먼 에러를 줄이기 위해서는 변수와 상수로 값을 관리하는 습관을 들이는 것이 좋다.

const nextLevel = level + 1

우리 팀의 경계 규칙 정하기

경계의 속성에 따라 이름을 정하고, 각 경계의 정의를 합의하여 모든 팀원들이 동일한 정의를 가진 경계를 통일하여 사용해야 한다.

예를 들어 성인인지 아닌지를 판별하는 함수를 제작할 때,STANDARD_AGE를 이상으로 볼 것인지 초과로 볼 것인지에 따라 해당 경계의 값이 변한다.

//초과로 설정할 경우
const STANDARD_AGE = 19
function isAdult(age){
  if(age>STANDARD_AGE){
    return true
  }
  return false
}

//이상으로 설정할 경우
const STANDARD_AGE = 20
function isAdult(age){
  if(age>=STANDARD_AGE){
    return true
  }
  return false
}

따라서 팀원들끼리 합의를 통해 팀의 규칙을 정하고, 그 규칙에 따라 코드를 일관성있게 작성하여야 한다.

일반적으로 많이 사용하는 경계의 종류를 살펴보자.

  • min-max : 최소와 최대

최소와 최대를 관리할 때 minmax 를 사용한다. 이때, 최소값과 최대값을 포함 여부를 팀원들과 합의를 하고, 상수명에 표현해주는 것이 좋다.

const MAX_IN_NUMBER = 100 //이상
const MAX_LIMIT_NUMBER = 101 //초과
const MIN_IN_NUMBER = 5 //이하
const MIN_LIMIT_NUMBER = 6 //미만
  • begin-end : 시작과 끝

달력에 일정을 저장할 때, 비행기나 숙소를 예매할 때와 같이 특정 시작과 끝을 관리할 때 beginend 를 사용한다. 보통 begin은 포함으로 보지만 end 는 합의가 필요하다.

  • first-last : 처음과 마지막

minmax 가 순차적이고 규칙적이며 연속적인 값의 경계라면, 순차적이지 않고 규칙적이지 않으며 연속적이지 않은 값을 관리할 때 firstlast 를 사용한다.

매개변수의 순서 주의하기

다음과 같이 매개변수가 2개인 경우, 함수의 네이밍과 매개변수들의 순서 및 연관성을 고려하면 단 번에 함수의 동작을 어느정도 예측할 수 있다.

getRandomNumber(5, 100)
// 5부터 100까지의 숫자 중 랜덤으로 난수를 생성할 것이라는 유추 가능!
getDates('2023-06-27','2023-06-30')
//2023-06-27 부터 2023-06-30 까지의 날짜를 가져올 것이라는 유추 가능!

일반적으로 사람은 작은 것에서 큰 것으로, 시작에서 끝으로 생각을 확장해 나간다. 따라서 더 작은 값, 또는 시작점을 먼저 전달하는 것이 좋다.

ps. 매개변수의 순서를 상관하지 않고싶다면 매개변수를 객체로 전달하는 방법도 있다. 05. 객체-다루기 의 구조 분해 할당 부분을 참고하자.


참조

  • 도서 Clean Code(클린 코드) / 로버트 C. 마틴 / 2013.12.24.
  • Udemy 강의 클린코드 자바스크립트 / Poco Jang / 2023. 5.
profile
프론트엔드 개발자

0개의 댓글

관련 채용 정보