TIL(210819): 리뷰에서 배운 코드 다듬기

최수민·2021년 8월 18일
0

TIL

목록 보기
1/8
post-thumbnail

1. Fail fast principle

Fail fast 원칙을 적용한 코드의 가장 큰 장점은 Indentation이 적용되는 범위를 줄일 수 있다는 것이다. 보통 에러 케이스는 throw new Error만하고 끝나니까 위쪽에서 일찌감치 처리해두고 중요한 본문에 집중할 수 있다.
적용 예시

function printUserProfile(user) {
  // 에러 케이스들만 빠르게 처리한다.
  if(!user) {
    throw new NotFoundException();
  }
  if(!user.profile) {
    throw new BadRequestException('프로필을 입력하지 않았습니다.');
  }
  
  // print하는 로직 ...
}

종만북에서 기저사례부터 처리하는 것을 보고 영감을 받아 자주 사용하던 기법인데 이렇게 정식 명칭이 있는줄은 몰랐다!
참고할만한 글

2. Error handling은 최대한 끝자락에서

되도록 마지막 단계에서 Error handling을 하자. 초반 단계에서의 error handling은 읽는 이에게 예상치 못한 컨텍스트가 될 수 있다. 쓰는 쪽에서 exception 대응이 충분히 되어있다면 넘어가자.

예시

    // BAD: initializeGa를 읽으며 에러 발생을 예측하기 어렵다.
    const getGaId = () => {
    	const result = process.env.GA_ID;
    	if (!result) {
    		throw new Error('GA ID 없다!');
    	}
    	return result;
    }
    const initializeGa = () => {
    	const tId = getGaId();
    	// ...
    }

    // GOOD
    const getGaId = () => {
    	return process.env.GA_ID;
    }
    const initializeGa = () => {
    	const gaId = getGaId();
    	if (!gaId) {
    		throw new Error('GA ID 없다!');
    	}
    	// ...
    }

물론 무작정 이 방법을 적용해야하는 것은 아니다. 각 계층 및 빌딩블록의 용도에 맞게 로직을 배치하는게 더 중요하다! 상황에 따라 잘 적용하자.

profile
velog에는 TIL, 잡담만 올립니다! 아티클들은 블로그로 (https://sumini.dev)

0개의 댓글