우테코 프리코스 7기 1주차 회고 및 하고싶은말

Geek Cat·2024년 10월 27일

우테코 1주차를 하면서 느낀점들을 작성하고자 합니다.

리뷰

저는 이번 1주차 리뷰를 12회정도 했습니다.
처음에는 그냥 심심해서 리뷰를 했습니다만, 계속 리뷰를 하다보니 제가 부족했던 부분들이 보이기도 했고, 반대로 도움을 줄수 있는 부분들이 있었습니다.

또한 이미 알고 있었던 개념들을 직접 텍스트로 전달하려고 하니 어려운 부분도 있었고, 아직 확실하게 이해하지 않고 있음을 알 수 있었습니다.

예외처리

저도 예외처리를 잘 하는 것은 아닙니다. 그러나 리뷰를 다니면서 공통적으로 느낀 부분이 있습니다. MVC패턴이나 여러 디자인 패턴을 적용하면서 확장성을 고려하신 분들이 많았습니다. 물론 유지보수 측면에서 너무 중요한 패턴들이고 공부해야만 하는 내용들입니다. 그런데 여러 분들이 예외처리에 대해 고민은 많이 안하신 것 같습니다.

예를 들어 1주차 "문자열 덧셈 계산기"에는 '커스텀 구분자'라는 것이 존재합니다. 이 커스텀 구분자는 '//'와 '\n'사이에 있는 '문자'를 의미합니다. 커스텀 구분자는 '문자' 입니다. '문자열'이 아니라 '문자'인 것이죠. 사실 과제에서 '문자'인지 '문자열'인지 강조는 하지 않아서 프로그램에서 문자열로 처리를 하였더라도 크게 문제 될 일을 아니라고 봅니다. 그런데, 당연하게 이러한 부분에서 생각을 했냐 안했냐는 큰 차이를 만들다고 보고 있습니다.

예를 들어 커스텀 문자는 숫자도 들어올 수 있는가? 커스텀 문자는 항상 맨 앞에서만 등장하는가? 커스텀 문자는 문자열도 가능한가? 등 고려할 사항들이 많습니다. 그런데 많은 분들이 확장성에 집중하여 간단히 고려할 수 있는 예외사항들을 고려하지 못한 것 같습니다.

저는 프로그램을 개발하면서 '제 1 목표'는 예측 가능한 입출력인지 입니다. 사용자의 입력에 따라 모든 상황에 대해 이미 고려를 하였는지가 매우 중요하다고 생각합니다. 출력이 일관되지 않다면 사용자 입장에서는 혼란이 생길 수 있습니다.

그리고 나서 '제 2 목표'는 유지보수입니다. 이때부터 디자인 패턴과 같은 부분들이 중요해지는 부분이라고 생각합니다.

이는 순서가 아닌 중요도 입니다. 유지보수를 위해 확장성을 고려해서 먼저 작성하고 예외처리를 해도 상관 없습니다. 제가 하고싶은 말은 확장성을 고려서 개발을 해도 중요도는 결국 예외처리라는 말을 하고싶습니다.

프로그래머는 기본적으로, 돌아가는 프로그램을 만드는 것이라고 생각합니다. 애초에 프로그램의 뜻은 '진행 계획이나 순서'를 뜻합니다. 사용자의 모든 입력(키보드, 마우스 등) 다르게 진행되어야 하는 계획이나 순서를 작성하는것이 프로그램이라고 할 수 있고, 잘 짜여진 계획은 잘 만들어진 프로그램이라고 생각합니다.

오버 엔지니어링

저는 우테코 프리코스의 장점 중 하나가 어렵지 않은 주제로 여러 가지 설계적인 시도를 해볼 수 있다는 것이라고 생각합니다. 과제를 진행하면서 많은 분들이 객체지향적인 코드 설계와 다양한 디자인 패턴을 고려해가며 코드를 작성하시는 모습을 볼 수 있었습니다. 여러 가지 객체지향 원칙을 적용하려는 노력과 패턴을 시도하는 모습은 정말 인상적이었고, 저 역시 많은 것들을 배울 수 있었습니다.

하지만 한편으로는, 과도한 설계나 패턴의 남용이 오히려 코드를 복잡하게 만들 수도 있겠다는 생각이 들었습니다. 객체지향과 디자인 패턴을 고민하는 건 분명 중요하지만, '단순함'의 가치도 함께 생각해봐야 하지 않을까요?

제가 강조하고 싶은 것은, 기능을 구현하는 데 있어 중요한 건 과하지 않고, 필요한 만큼의 설계를 적용하는 것입니다. 때로는 '심플한' 설계가 오히려 유연하고 유지보수하기 좋은 코드로 이어질 수 있기 때문입니다. 모든 가능성을 염두에 두고 설계를 하는 것도 중요하지만, 현재의 요구 사항에 맞게 적절한 수준에서 구현하는 것 역시 무시할 수 없는 부분입니다.

객체지향 설계와 단순함의 균형, 여러분은 어떻게 생각하시나요? 그리고 상황에 맞는 적절한 설계는 무엇일까요?

profile
안녕하세요. 개발자 Geek Cat 입니다.

1개의 댓글

comment-user-thumbnail
2024년 10월 27일

공감합니다ㅎㅎ 같은 기능을 100줄로 구현한 코드와 10줄로 구현한 코드가 있다면 전자가 더 오류가 발생하기 쉽겠지요 😀

답글 달기