JAVA

우아한 테크코스 6기[BE] 1주차 피드백

hyukji 2023. 10. 28. 22:26

1주차가 끝나고 코드 리뷰를 통해 다른 분들의 코드를 읽어보고 또 코드 리뷰를 받으며 깨달은 점들을 적어보고자 한다.

 

먼저는 매직 넘버이다. 

매직 넘버에 대해 알고 있었고 리팩토링을 통해 매직 넘버를 없애려고도 했다. 하지만 마지막 재시작 여부와 관련해서 미처 처리하지 못한 매직 넘버가 존재했다ㅎ 또한 매직 넘버를 정의할 때 'UpperCase 언더바 표현'을 이용하는 것이 전통적인 방법이었다. 또한 이러한 상수값들을 모아서 하나의 클래스로 정리하신 분들이 많았다. 따라서 나중에 변경이 있을 때 해당 클래스의 값을 변경하는 방벙을 통해 유지 보수성을 높일 수 있었다.

 

두번째로는 디자인 패턴과 관련한 내용이다. 대부분의 지원자들의 MVC 디자인 패턴을 이용해 코드를 작성하셨다. spring을 공부하면서 MVC 패턴에 대해서는 알았지만, 이런 소규모 프로젝트에서의 사용성에 대해서는 의문을 갖고 있었다. 하지만 코드리뷰 과정을 거치며 디자인 패턴에 맞춰 작성된 코드들이 이해하기 더 유용하다는 것을 알게 되었다. 또한 MVC 패턴을 적용함으로 코드들의 위치에 대해 생각하게 되었다.

 

MVC 패턴에는 5가지 규칙이 존재했다.

1. model은 controller와 view에 의존해서는 안된다. (model 내부에는 controller와 view에 대한 코드가 있으면 안된다)

2. view는 model에만 의존해야 하며, controller에 의존해서는 안된다.(view 내부에는 model에 대한 코드만 존재한다)

3. view가 model로 부터 데이터를 받을 때에는, 사용자마다 다르게 보여지는 데이터에 대해서만 받아야한다.

4. controller는 model과 view에 의존해도 된다.

5. view가 model로 부터 데이터를 받을 시, 반드시 controller에서 받아야한다.

 

이러한 규칙을 따라가다 보니, 필자가 작성했던 출력 매서드 위치와 관련해서 고민했던 내용들을 해결할 수 있었다. controller에서 model로 부터 데이터를 받아 출력하도록 작성하는 것이 mvc 패턴에 맞추어 작성하는 방법이었다. 2주차에서는 이런 MVC 패턴을 제대로 적용해서 코드를 작성해 보려고 한다.

 

<참고자료>

https://youtu.be/ogaXW6KPc8I?si=gRMZFX7l_WFVyMH-

 

예외처리와 관련해서도 많이 배울 수 있었다. 처리 과정에 문제가 생기면 그냥 'IllegalArgumentException'을 반환하도록 작성했었다. 하지만 '정규표현식'을 활용해 예외처리를 할 수 있음을 알게 되었다. 또한 ErrorCode를 만들어 예외처리를 세분화하는 법도 알 수 있었다. 이런 식으로 예외 상황을 정확히 명시하고 세분화할 수 있다면 버그 발생을 확실히 줄일 수 있을 것이다.

 

마지막으로는 else 처리이다. 필자는 else를 없애기 위해 매서드를 분리했다. 예를 들어 재시작 여부를 판단할 때 입력값이 1이면 재시작, 2이면 종료 하는 방식으로 처리했다. 하지만 커뮤니티에서 else와 관련한 글을 찾아 읽으며 enum을 이용해서 처리할 수 있음을 알게 되었다. enum의 필요성에 대해 잘 몰랐지만 큰 도움이 되었다.

 

<참고자료>

https://tecoble.techcourse.co.kr/post/2020-07-29-dont-use-else/