[Lv_7] 튜터님 피드백을 받아 수정 - 김상민 #28
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
2.1. 초기화 시 의존성 주입을 활용하기
피드백: "초기화 시 의존성 주입을 받도록 활용하면 추후 테스트나 여러 방면에서 확장성 있는 코드가 될 것입니다."
개선 내용: 의존성 주입(DI, Dependency Injection)은 클래스 내부에서 직접 객체를 생성하지 않고, 외부에서 필요한 객체를 주입받는 방식이다. 기존 코드에서는 BaseballGame 클래스가 초기화될 때 AnswerCreatorLv6 인스턴스를 자체적으로 생성했는데 내부에서 직접 생성하면 해당 클래스가 특정 구현에 강하게 결합되므로, 확장성과 테스트 가능성 측면에서 좋지 않다는 것을 깨달았다.
개선 코드:
이 방식으로 개선하면서 얻은 장점은 다음과 같다:
확장성: 추후 AnswerCreatorLv6 대신 다른 구현체를 주입하여 기능을 변경하거나 확장하기 쉽다.
2.2. startBaseballGame 메서드의 역할 분리
피드백: "startBaseballGame 메서드가 다소 많은 역할을 하며 비대해 보입니다. 실제 게임을 플레이하는 부분을 따로 메서드로 분리하는 것이 좋습니다."
개선 내용: startBaseballGame 메서드는 게임의 흐름 전체를 관리하며 사용자 입력 처리, 결과 판정, 메시지 출력 등 다양한 역할을 수행하고 있었는데 이로 인해 코드가 길어지고 가독성이 떨어진 것을 인지는 하고 있었다. 이를 해결하기 위해 역할을 세분화하고 메서드를 나누어 관리하도록 수정했다.
개선 코드:
이 방식으로 개선하면서 얻은 장점은 다음과 같다:
가독성 향상: 메서드 하나에 너무 많은 내용이 담기지 않으므로 코드가 읽기 쉬워진다.
유지보수 용이성: 각 메서드가 하나의 역할만 수행하므로, 수정할 때도 영향 범위가 명확해진다.
2.3. 매직 넘버 및 매직 스트링을 상수로 관리
피드백: "100... 999와 같은 매직 넘버는 상수로 관리하는 것이 유지보수에 용이합니다. 네임스페이스를 이용해 여러 매직 넘버나 매직 스트링들을 관리해 보세요."
개선 내용: 코드에서 사용된 하드코딩된 숫자(예: 100, 999)나 문자열은 '매직 넘버' 또는 '매직 스트링'이라고 불리며, 코드 이해를 어렵게 하고 유지보수성을 저하시킨다고 한다. 이를 해결하기 위해 상수로 정의하고 네임스페이스를 통해 관리했다.
개선 코드:
이 방식으로 개선하면서 얻은 장점은 다음과 같다:
가독성 향상: 코드 내 숫자와 문자열이 의미를 가지도록 네이밍해 이해하기 쉽다.
유지보수성 향상: 매직 넘버나 스트링이 코드 여러 곳에서 사용될 경우 상수 값만 변경하면 되므로 수정이 간편하다.
2.4. 디렉토리와 파일 구조의 명확한 관심사 구분
피드백: "디렉토리에서 Classes와 Models의 구분이 명확하지 않았습니다. 클래스라는 디렉토리명보다는 각 파일의 역할을 담는 폴더명을 지어 구분하는 게 더 적절합니다."
개선 내용: 기존 구조는 Classes와 Models로 구분되어 있었으나, 이 구분이 명확하지 않아 가독성이나 역할 구분이 모호했다. 따라서 각 클래스의 역할을 바탕으로 폴더명을 정리하여 디렉토리 구조를 개선했다.
개선된 디렉토리 구조:
이 방식으로 개선하면서 얻은 장점은 다음과 같다:
명확한 역할 구분: 각 디렉토리와 파일이 어떤 역할을 하는지 쉽게 알 수 있다.
프로젝트 유지보수 용이성: 파일을 찾기 쉽고, 각 기능이 명확히 분리되어 있기 때문에 유지보수에 유리하다.