클래스를 나눠보며 각 클래스의 책임에 대해 고민하는 시간이 많았던 2주 차였다!
확실히 코드가 깔끔해지고, 역할이 명확해져 뿌듯했다 ㅎㅎ
🔆 프리코스를 진행하면서 알게 된 점 / 깨달은 점
프리코스에서 일주일 단위로 미션을 진행하면서, 목표 달성에 급급하기보다는 나만의 속도로 코드를 개선하는 것에 집중할 수 있었다. 특히 Java를 처음 다루면서 객체지향 개념에 대해 많이 배웠다. 예를 들어, 공통 로직을 메서드로 분리해 재사용성을 높이는 방법, 하나의 클래스에 모든 로직을 담지 않고 도메인, 비즈니스 로직, 입출력, 예외 처리를 나눠 클래스를 설계하는 방법, 각 클래스의 역할과 책임에 대해 고민하게 되었다. 피드백을 통해 enum을 활용해 메시지를 관리하는 법, private 메서드와 static 사용 시기, 매직 스트링을 상수로 관리해 가독성을 높이는 방법도 배웠고, 배열보다 컬렉션을 사용하는 이유와 각각의 장단점도 알게 되었다.
또한, TDD 방식으로 테스트 코드를 작성하며, 단순히 터미널에서 일일이 디버깅하는 것보다 유지보수와 로직 보완이 훨씬 용이하다는 점도 깨달았다. 필요한 기능만 함수로 구현해 코드를 깔끔하게 유지하고 코드 의존성을 줄이는 함수 설계 방법도 배우게 되었다.
🔆 클래스 나누기 도전
이번 주에는 하나의 클래스에 모든 코드를 작성하던 방식에서 벗어나, 각 객체의 역할을 고려해 클래스를 나눠보는 도전을 했다. 이전보다 코드가 기능별로 잘 나뉘어 있어 가독성도 좋아졌고, RacingService(비즈니스 로직), RacingIO(입출력), Validator(예외 처리), Application(프로그램 실행) 클래스로 구분했다. 다른 분들의 코드를 보며 더 세부적으로 나누는 방법도 배웠지만, 처음이라 큰 단위로 나눠보았다.
RacingService 구현은 예상보다 수월했다. 입력, 출력, 예외 처리를 각각의 역할로 분리해 온전한 로직에만 집중할 수 있었다. 게임 시작 로직을 RacingService에 둘지 Application에 둘지 고민도 되었는데, “플레이 버튼을 눌러 게임이 시작되는 흐름”처럼 RacingService는 게임 진행만 담당하고, Application은 실행과 RacingIO 호출을 담당하도록 결정했다. 예외 처리는 추가 입력 없이 검증 후 필요한 에러만 던지는 방식이므로 Application이 아닌 RacingService에 두어 간결하게 만들었다.
클래스를 나누는 과정에서 클린 코드의 중요성을 다시 느낄 수 있었다. 변수와 함수명을 직관적으로 작성해 다른 사람이 읽을 때도 의도와 역할을 바로 파악할 수 있도록 했고, 주요 데이터를 private으로 감추고 getter 메서드로 접근하게 하여 보안도 강화했다. enum과 final 상수를 사용해 가독성도 높이고 관리도 쉽게 했다.
💭 다음 미션에서 시도할 것
1. 커밋 컨벤션을 더 찾아보며 커밋 로그를 깔끔하게 작성하기
2. 컬렉션에 대해 더 공부해 상황에 맞는 컬렉션을 잘 선택하기
3. private 접근자로 보안을 더욱 강화하기
'💠프로젝트 및 경험 > 우테코 7기' 카테고리의 다른 글
[우테코 7기] 백엔드 프리코스 3주 차 회고 (0) | 2024.11.05 |
---|---|
[MVC 패턴] 로또 MVC 패턴을 이용하여 구현하기! (0) | 2024.11.04 |
[TDD] 자동차 경주 TDD 방식으로 구현하기! (0) | 2024.10.28 |
[TDD] 문자열 덧셈 계산기 TDD 방식으로 구현하기! (1) | 2024.10.21 |
[우테코 7기] 백엔드 프리코스 1주 차 회고 (0) | 2024.10.21 |