중첩 처리는 예술이다.

Songss·2024년 11월 27일
0

개발지식

목록 보기
2/16

강의를 들으면서 강사님께서 말씀하시길 ...
예외처리를 하다보면 정말 많은 조건문들이 생기는데...
조건문이 많아지면 가독성이 정말 떨어진다고...

물론 변수명을 잘 작성해야 하는 것도 있지만
조건문을 쓰다보면 코드가 들여써지기는 당연하니...
코드의 실루엣? 모양? 라인? 이 이뻐야 코드도 보기 좋지 않은가...

나쁜 예시와 좋은 예시를 그려보자..


나쁜 예시

let isUserLoggedIn = true;  // 사용자 로그인 상태
let isUserHasPermission = false;  // 사용자 권한 상태
let isUserRoleValid = true;  // 사용자 역할 유효성

if (isUserLoggedIn) {
  if (isUserHasPermission) {
    res.status(200).json({ message: "사용자는 로그인되었고 권한이 있습니다." });
  } 
  if (!isUserHasPermission) {
    res.status(403).json({ error: "사용자는 권한이 없습니다." });
  }
  
  if (isUserRoleValid) {
    res.status(200).json({ message: "사용자의 역할이 유효합니다." });
  } 
  if (!isUserRoleValid) {
    res.status(400).json({ error: "사용자의 역할이 유효하지 않습니다." });
  }

} 
if (!isUserLoggedIn) {
  res.status(401).json({ error: "사용자가 로그인되지 않았습니다." });
}
  1. .status()가 지저분 하다...
  2. 영어 모의고사 지문 읽는 듯한 기분이 든다.

좋은 예시

let isUserLoggedIn = true;  // 사용자 로그인 상태
let isUserHasPermission = false;  // 사용자 권한 상태
let isUserRoleValid = true;  // 사용자 역할 유효성

if (isUserLoggedIn) {
  if (isUserHasPermission) {
    if (isUserRoleValid) {
      res.status(200).json({ message: "모든 조건이 참입니다. 사용자에게 접근을 허용합니다." });
    } else {
      res.status(400).json({ error: "사용자의 역할이 유효하지 않습니다." });
    }
  } else {
    res.status(403).json({ error: "사용자에게 권한이 없습니다." });
  }
} else {
  res.status(401).json({ error: "사용자가 로그인되지 않았습니다." });
}
  1. 정말 필요한 .status()들 만 존재하는 것 같다.
  2. GPT한테 리팩토링하라고 해도 못할 거 같다.

0개의 댓글