인프런 커뮤니티 질문&답변

zzzzz님의 프로필 이미지
zzzzz

작성한 질문수

김영한의 실전 자바 - 기본편

접근 제어자-문제풀이1번 질문있습니다.

작성

·

124

0

package ex3;

public class MaxCounter {
    static int count;
    private int maxcount;

    public MaxCounter(int x) {
        this.maxcount=x;
    }


    public void increment(){
    if (count<maxcount){

        count++;
    }
    else{
        System.out.println("최대값을 초과할 수 없습니다.");
    }
    }

    public int getCount(){
        return count;
    }
}

위에처럼 풀어도 되나요? 작동되긴 합니다.

답변 1

0

안녕하세요. zzzzz님, 공식 서포터즈 OMG입니다.

강의코드

public class MaxCounter {
    private int count = 0;
    private int max;

    public MaxCounter(int max) {
        this.max = max;
    }

    public void increment() {
        if (count >= max) {
            System.out.println("최대값을 초과할 수 없습니다.");
            return;
        }
        count++;
    }

    public int getCount() {
        return count;
    }
}

와 비교하여 3가지의 차이점이 보이네요.

(1) static 변수로 변경

static 변수로 사용하신 이유만 명확히 알고 계신다면 (static을 적용했을 때 인스턴스 변수와의 차이를 구분 할 수있는가) 강의 문제풀이에 있어 문제는 없을 것 같습니다.

 

(2) 생성자 파라미터 이름(x) 과 max <-> maxcount

특별한 이유가 있지 않다면 일반적으로 필드(maxcount) 이름과 생성자 파라미터 이름(x)을 동일하게 하는 것 같습니다.(IDE의 기능을 통해서 단축키로 빠르게 생성해내거나 할 때도 동일하게 매칭시켜주기도 하죠)

또한 최댓값을 표현하기 위한 변수명으로 max, maxCount, maxNumber 등 다양하게 사용할 것 같습니다.

maxcount로 해도 문제는 없습니다.

 

(3) if/else 조건문

if / else문을 early return 패턴이라고 하여 else문을 되도록 사용하지 않도록 지향하는 패턴이 있는데요, 저도 이러한 패턴을 선호하고 강의에서도 해당 패턴을 적용하였습니다.

아래 글을 참고하여 본인의 소신 혹은 생각을 갖고 적용하시면 될 것 같아요.

https://thearchivelog.dev/article/are-early-returns-any-good/

감사합니다.

zzzzz님의 프로필 이미지
zzzzz

작성한 질문수

질문하기