KakaoEnt-Study / Effective-Java-Study

카카오 엔터테인먼트 백엔드 개발자의 생존 전략
1 stars 0 forks source link

[item 51] 메서드 시그니처를 신중히 설계하라 #65

Open kante-j opened 2 years ago

kante-j commented 2 years ago

메서드 이름을 신중히 짓자

편의 메서드를 너무 많이 만들지 말자

매개변수 목록은 짧게 유지하자

4개 이하가 좋다.

4개가 넘어가면 기억하기 어렵기 때문.

매개 변수 목록 줄이기

  1. 여러 메서드로 쪼갠다.

    • 쪼개진 메서드 각각은 원래 매개변수 목록의 부분집합을 받음
    • 직교성(orthogonality)을 높여 메서드 수를 줄여주는 효과도 있음
      • java.util.List 인터페이스
      • 리스트에서 주어진 원소의 인덱스
  2. 매개 변수 여러 개를 묶어주는 도우미 클래스를 만드는 것이다.

    • static member class로 만듬

    • 카드게임 예시

      • 메서드를 호출할 때 카드의 숫자와 무늬를 항상 같은 순서로 전달
      • 이 둘을 묶는 클래스를 만들어 하나의 매개변수로 주고받기.
    • // 기존 메서드
      public void method(int a, String b, String c, double d) {
      // do something
      }
      
      // Helper 클래스 생성
      class Helper {
      int a;
      String b;
      String c;
      double d;
      }
      
      public void someMethod(Helper helper) {
       // do something
      }
  3. 1,2 두 기법을 혼합한 것으로 객체 생성에 사용한 빌더 패턴을 메서드 호출에 응용

    • 매개변수가 많을 때, 그 중 일부는 생략해도 괜찮을 때 사용
      1. 모든 매개변수를 하나로 추상화한 객체 정의
      2. 클라이언트에서 이 객체의 Setter 메서드 호출 (매개변수 하나 혹은 서로 연관된 몇 개만)
      3. 필요한 값 설정
      4. execute 메서드를 호출해 앞서 설정한 매개변수 유효성 검사
      5. 설정 완료된 객체 넘김

매개변수 타입으로는 클래스보다 인터페이스

boolean 보다는 원소 2개짜리 열거 타입

delta-f-kakaoent commented 2 years ago

메서드 이름을 신중히 짓자

직교성(orthogonality)