
2주차 공통 피드백
2주차 공통 피드백을 기준으로 3주차 과제의 목표를 정했기 때문에 먼저 3주차에 대한 내용을 설명하기 전 2주차 공통 피드백 중 내가 중점적으로 생각한 부분에 대해 알아보겠다.
README.md 파일은 프로그램의 개요를 소개하기 때문에 자세하게 적어야 한다.
README.md 파일은 기본적으로 "다른 사람"이 보는 걸 전제하에 작성하는 파일이다. 하지만 나는 이전 과제에서는 프로그램의 기능만 적었다. 하지만 그렇게 적어서는 다른 사람이 이 프로그램이 어떤 동작을 하는지 알기 쉽지 않기 때문에 이번 과제 부터는 프로그램의 요구 사항, 제약 사항, 기능 목록, 테스트 목록 등을 적어 프로그램을 자세하게 나타낼려고 했다.
함수(메서드)에는 하나의 책임(기능)만 있어야 한다.
3주차 과제에서 가장 적극적으로 반영한 피드백이다. 사실 우테코 이전에 읽었던 객체지향 책이나, 학과 교수님이나 하나의 책임이란 말을 항상 강조했다. 하지만 그 당시 나는 그말을 제대로 이해할 수 없었고, 너무 모호한 말이라고 생각했다. 그래서 하나의 메서드에 여러 책임이 들어간 경우도 많았고, 아닌 경우도 있는 뒤죽박죽인 프로그램을 만들었다. 그러나 피드백으로 하나의 메서드이 하나의 기능만 하도록 만들라고 한 만큼 이번에는 제대로 이해하고 나만의 기준을 세워서 프로그램을 만들어보자는 목표를 세웠다.
상수의 경우 그대로 사용하지 말고 불변 변수로 만들어 이름을 지어준다.
사실 이 경우는 C언어를 처음 배우고 포인터 변수를 메모리에 할당하고 해제하는 것을 배웠고, 최대한 변수를 안 만드는 스타일로 코드를 작성하면서 상수 값은 그냥 그대로 쓰던 것이 습관이 되어 다른 언어에서도 그렇게 사용했다. 하지만 Java는 가비지 컬렉터가 있으므로 이런걸 신경 쓸 필요가 없고, 오히려 가독성을 위해서 변수를 만든는 것이 권장되는 것을 알았다. 그러다보니 이번 과제에서 이런 방식에 익숙해지기 위해서 최대한 상수를 변수로 선언하여 사용하는 것을 목표로 삼았다.
3주차 과제 목표 및 달성 과정
객체지향의 의미에 맞게 그리고 흐름이 자연스럽게 보이는 코딩을 하자
2주차 공통 피드백인 "하나의 메서드에 하나의 책임"을 위해 세운 목표이다. 객체지향의 5원칙 중 하나인 SRP와 맞닿아 있는 말인 만큼 객체지향에 대해 생각하며 코딩을 하면 피드백을 준수할 수 있을거라 생각하고 목표를 정했다. 그렇기 위해서 프로그램의 기능을 세세하게 분석하다보니 검증, 분리, 변환, 계산 등 여러 기능으로 나눌 수 있었고 각각의 기능을 구현하고 Git commit을 하다보니 저번 회고록에서 말한 목표 중 Git을 적극적으로 활용, 설계를 문서화, 객체지향 의미에 맞는 코딩 을 모두 달성할 수 있었습니다.
그리고 코드만 보고도 프로그램의 목적과 흐름을 알 수 있게 작게 나눈 메서드의 이름을 모두 흐름에 맞게 작성했습니다. 그렇게 객체지향 적인 코딩으로 작게 나눈 메서드와 흐름에 맞는 메서드 명의 효과로 이전에는 코드만 보고도 프로그램의 기능이나 흐름을 제대로 알지 못했지만, 이번 과제에서는 목표를 달성할 수 있었습니다.
TDD 기반으로 프로그램을 만들자
저번 회고록에서도 세운 목표입니다. 예전부터 강의나 책에서 TDD 기반의 코딩이 중요하고, 효과적이라고 했기에 이번 기회에 도전해볼 결심을 했습니다. 하지만 결론부터 말하면 목표를 완벽하게 달성하진 못했습니다. 사실 TDD라는 것의 의미만 알아도 충분히 할 수 있을 것이라 생각하여 도전했습니다. 초반에 간단한 기능의 경우에는 TDD를 어느정도 준수하며 개발을 했지만, 여러 객체가 사용되고, 흐름이 복잡해지는 후반 기능이 되자 더이상 TDD를 기반으로 개발하지 않고 머리 속에 떠오른 기능과 예외를 가지고 바로 개발을 했습니다. 이번 과제에서 TDD를 아예 하지 않은 것은 아니지만 제대로 준수하지 못했으므로 다음 4주차 과제에서 TDD에 대한 느낌과 방식을 충분히 학습을 하고 진행해볼 것입니다.
마무리 하며...
다른 사람과 비교하여 조바심을 가지지 말고, 어제의 나와 비교하여 성장해라
이 문장은 2주차 피드백에 있던 말인데 여태까지 피드백 중 나에게 가장 필요한 피드백이였던거 같다. 첫 과제와 두 번째 과제가 끝나고 프리코스 커뮤니티를 통해 다른 사람들의 코드를 보며 부족한 부분을 많이 깨닫고 짧은 시간 내에 비견되기 위해 노력했다. 하지만 이런 생각이 오히려 조바심을 만들었고 그때문에 하나하나 차근하게 제대로 알고나서 과제를 진행하는 것이 아니라 일단 진행해보는 식으로 과제를 했던 것 같다. 특히 3주차 과제를 하며 더 많이 느꼈는데 TDD에 잘 알지도 못하면서 도전한 부분이나, 여러 디자인 패턴을 잘 알지도 못하면서 적용 해볼려고 한 경험이 얼마나 조바심을 느꼈는지 말해준다. 물론 이런 새로운 개념과 기술에 도전하는 것 자체가 어제의 나와 비교하여 성장을 한 것이라고 생각한다. 하지만 이는 다른 사람과 비교하며 나온 부산물이지 내가 목표한 결과물은 아니라고 생각한다.
그래서 마지막 과제에서 만큼은 다른 사람과 비교를 하는 것이 아니라 내가 만든 이전의 과제와 4주차 과제를 비교하며 더 나아간 결과물을 위해 노력하며 성장하는 것을 목표로 할 것이다.
'기타' 카테고리의 다른 글
| [우테코 프리코스] 2주차 자동차 경주 회고록 (3) | 2024.10.30 |
|---|---|
| [우테코 프리코스] 1주차 회고 - 문자열 덧셈 계산기 (0) | 2024.10.23 |