Skip to content

Latest commit

 

History

History
46 lines (45 loc) · 1.91 KB

가변_인수는_신중히_사용하라_폰드.md

File metadata and controls

46 lines (45 loc) · 1.91 KB

가변 인수는 신중히 사용하라

가변 인수 메서드는 명시한 타입의 인수를 0개 이상 받을 수 있다.
메서드를 호출하면 인수의 개수와 길이가 같은 배열을 생성 후, 메서드에 건네준다.

  • 인수가 1개 이상이어야 하는 경우
    • 0개가 받아지도록 설계하는 건 🤮
      public void min(int... args) {
          if (args.length == 0) {
              throw new IllegalArgumentException();
          }
          int min = args[0];
          for (int arg : args) {
              if (arg < min) {
                  min = arg;
              }
          }
          System.out.println(min);
      }
      • 가변 인수의 갯수로 검증하게끔 하면 런타임에 에러를 확인 할 수 있다.
      • 지저분한 코드
    • 필수 매개변수를 추가로 받도록 하면 된다.
        public void min(int firstArg, int... args){
            int min = firstArg;
            for(int arg : args){
                if(arg < min){
                      min = arg;
                }
            }
          System.out.println(min);
        }
  • 성능에 민감한 상황에 가변인수를 사용하는 패턴
    가변 인수 메서드는 호출 될 떄마다 배열을 새로 할당하고 초기화
    이 비용을 감당하기 힘들지만, 가변 인수의 유연성이 필요하다면 다음과 같은 패턴을 적용할 수 있다.

    ex) 해당 메서드의 호출의 대부분이 인수를 3개 이하로 사용한다면, 다음과 같이 메서드를 다중정의
    public void method(){ ... }
    public void method(int a1){ ... }
    public void method(int a1, int a2){ ... }
    public void method(int a1, int a2, int a3){ ... }
    public void method(int a1, int a2, int a3, int... args){ ... }

가변 인수를 사용하는 메서드의 호출 책임을 줄일 수 있다.