✅네이버클라우드 캠프/개발일기

[네이버클라우드캠프] 35일차. 자바 프로그래밍에서의 가변 파라미터 사용과 임시 변수 리팩토링

우동한그릇 2023. 6. 14. 15:34
반응형

 

* getNo 함수와 NullPointException


* Refactoring - 가변 파라미터 사용 

가변 파라미터 사용

가변 파라미터 사용(refactoring with variable parameters):
주어진 코드를 보면 inputString 메서드가 가변 파라미터 args를 사용하고 있다.

이렇게 하면 메서드를 호출할 때 여러 개의 인자를 전달할 수 있다. title에는 형식 문자열이 전달되고,

args에는 형식 문자열에 대응하는 값들이 전달된다. printf 메서드를 사용하여 형식 문자열과 값들을 출력하고,

사용자로부터 입력을 받아 반환한다.

 

  public static String inputString(String title, Object... args) {
    System.out.printf(title, args);
    return scanner.nextLine();
  }

 

 

* Refactoring - 임시변수를 질의 함수로 바꾸기

리팩토링 임시 변수를 사용하는 대신 질의 그 자체를 넣어라.

임시 변수를 질의 함수로 바꾸기(refactoring with replacing temporary variable with query function):
주어진 코드를 보면 Prompt.inputString("암호?")라는 임시 변수를 사용하고 있다.

이 변수는 board.getPassword()와 비교하여 암호가 일치하는지 확인하는 조건문에서 사용된다.

 

        if (!Prompt.inputString("암호?").equals(board.getPassword())) {
          System.out.printf("암호가 일치하지 않습니다.");
          return;
        }

 


* 13. 게시글 CRUD 추가

 


* 14. 독서록 CRUD 추가


* 기존 코드 복제해서 새 기능을 구현할 때 문제점 

 

클래스 이름은 반드시 대문자로 시작하는 것이 관례이다.

non-static 변수로 만들어 확장성과 유지보수를 올리기 위해서는 객체를 생성해야하는데

이때는 보통 클래스의 이름을 소문자로 만들어 지정해주기때문이다.

 

 

해당 메소드가 인스턴스 변수를 쓰고 있지 않다면 (this를 사용하지 않는다면) ,

그 메소드는 static 메소드로 만들어 준다.

 

예를 들어, 

아래와 같이 인스턴스 변수를 사용하지 않고 스태틱 변수만을 사용하는 경우에

static 메소드로 사용한다.

 


* 변수 초기화 문장

변수  초기화 문장은 자동으로 생성자 안으로 이동하여 컴파일하게 된다.

그러나 명시적으로는 클래스에 멤버로 두는 것이 좋다.

 

 

* 의존객체 주입

의존 객체 주입은 객체가 다른 객체에 의존할 때, 의존하는 객체를 직접 생성하는 대신

외부에서 해당 객체를 전달받는 방식이다. 이를 통해 객체 간의 결합도를 낮출 수 있고,

유연성과 재사용성을 향상시킬 수 있다.

MemberHandler 객체의 생성자에서 prompt 객체를 매개변수로 받고 있으므로, MemberHandler 객체를 생성할 때 prompt 객체를 전달해야 한다. 이를 통해 MemberHandler 객체는 외부에서 주입받은 prompt 객체를 사용할 수 있게 된다.

이는 MemberHandler 클래스가 Prompt 클래스에 직접 의존하지 않고, 외부에서 다양한 Prompt 객체를 주입받을 수 있는 유연한 설계를 가능하게 한다.

 

 MemberHandler memberHandler = new MemberHandler(prompt);

 

 

반응형