후기

우테코 4주차 후기

잼추 2023. 12. 12. 21:41

프로젝트를 시작하면서 처음에는 모델 클래스의 구성이 어려웠습니다. 특히 메뉴 종류를 어떻게 효율적으로 관리할지 고민이 컸습니다. 메뉴 종류별로 나누어 입력하는 방식이 처음에는 논리적으로 보였지만, 사용자가 원하는 메뉴를 찾는 과정이 복잡해지는 문제를 발견했습니다.

이를 해결하기 위해 메뉴 모델 클래스를 새로 만들었습니다. 그런데 이 클래스를 활용해 사용자가 선택한 메뉴를 다루는 OrderMenu 클래스를 만드는 과정에서 문제가 발생했습니다. 이름 충돌이 발생하거나, 메뉴의 차이점을 파악하거나, 생성자의 입력값을 결정하는 등의 문제를 해결하는 과정에서 객체지향적인 설계에 대해 깊게 생각하게 되었습니다.

그리고 '객체를 객체 답게 사용하라'는 원칙에 대한 고민도 있었습니다. 이 원칙은 객체가 수행하는 메소드는 해당 객체 내부에 구현해야 한다는 것을 의미합니다. 그런데 필요한 곳에서는 결국 getter를 사용해야 했고, 이것이 과연 올바른 방향인지에 대해 고민하게 되었습니다.

또한, Comparable 인터페이스를 사용하는 것이 처음에는 어렵게 느껴졌지만, 사용하고 나서는 이 방식이 효율적이라는 것을 깨달았습니다.

그리고 내부 변수를 최소화하는 원칙이 모델 클래스에도 적용됨을 알게 되었습니다. 모델 클래스에 메소드를 추가하면서 변수와 메소드 간의 관계가 복잡해지는 것을 경험했습니다. 그래서 이를 해결하기 위해 클래스를 날짜, 주문, 할인 부분 등으로 나누었습니다.

하지만 이 과정에서도 문제가 있었습니다. 모델 클래스를 나누는 것이 익숙하지 않았기 때문에, 내부 객체를 새로 생성해야 한다는 것을 잊어버렸고, 이로 인해 null error를 겪었습니다.

이번 과제를 거치면서 '객체를 객체 답게 사용하라'는 원칙의 의미를 더 이해하려고 노력했지만, 아직 getter의 사용에 대한 고민이 남아있습니다. 이에 대해 더 공부하고 이해해야겠다는 결론을 내렸습니다.