SMALL

Refactoring Tips

  • 변경되면 안되는 변수나 RequestBody 파라미터에 final 붙이기
  • 중복되거나 길어지는 코드 private 지역 변수 선언하기
  • Null이면 안되는 Parameter @Nonnull 키워드 붙이기
  • get 메서드는 없으면 Throw 날리기, find 메서드는 애초에 Optional로 반환하는 것이 좋음
  • Magic Number Validation 코드 줄이는 방법!
    • final 변수로 상수 값 갖는 클래스 만들기 (DMakerConstant.class)
    • Validation 할 항목의 Enum에 상수로 최소, 최대값 할당해주기
    • Function<>() 이용해서 Enum 자체에 Validation 메서드 만들기 (진짜 개천재인 듯)
    • @AllArgsConstructor
      @Getter
      public enum DeveloperLevel {
          NEW("신입 개발자", years -> years == 0),
          JUNIOR("주니어 개발자", years -> years <= MAX_JUNIOR_EXPERIENCE_YEAR),
          JUNGNIOR("중니어 개발자", years -> years > MAX_JUNIOR_EXPERIENCE_YEAR
                  && years < MIN_SENIOR_EXPERIENCE_YEAR),
          SENIOR("시니어 개발자", years -> years >= MIN_SENIOR_EXPERIENCE_YEAR);
      
          private final String description;
          private final Function<Integer, Boolean> validateFunction;
      
          public void validateExperienceYears(Integer years){
              if(!validateFunction.apply(years))
                  throw new DMakerException(DMakerErrorCode.LEVEL_EXPERIENCE_YEARS_NOT_MATCHED);
          }
      }
      
LIST

+ Recent posts