인프런 워밍업 클럽 2기 백엔드 - 발자국 2주차
인프런 워밍업 클럽 2기 발자국 2주차
1. 한 주의 정리
나머지 뒤의 섹션을 들었고, 직접 리팩토링을 해보니 역시 의도적으로
연습하지 않으면 익숙해지기 힘들겠다는 생각이 들었다.
✅ 섹션 6. 코드 다듬기
섹션 6의 코드 다듬기는 발견하지 못한 버그를 잡는 다거나 알고리즘의 교체
패키지를 정리하고, 변수의 파라미터의 순서 등을 정리하는 등 다양한 리팩토링이 진행된다.
알고리즘에 대해서,
나는 좀 긍정적인 시각이다.
알고리즘에 대해 굉장히 중요하다고 생각하고 활용을 잘 해야한다고 생각하는데,
그렇지 않은 입장도 있다.
✅ 섹션 7. 리팩토링 연습
본격적으로 코드가 하나 주어지고 해당 코드를 리팩토링 하는 연습을 진행했다.
워밍업 클럽의 미션으로도 진행한 해당 리팩토링은 아래의 미션에서 정리하도록 하겠다.
여기서는 확실히 개개인의 관점에 따라 같은 코드가 각자 다르게 리팩토링 되는 걸 경험 할 수 있었다.
그 관점이 모두 납득이 가는 충분한 이유였고, 그렇기에 리팩토링과 클린 코드에 대한 이 스터디의 소중함을 느꼈다.
2. 미션
이번 주차는 직접 리팩토링을 하는 미션을 진행했다.
꽤 긴데 가볍게 정리를 해보도록 하자.
✅ 리팩토링
나는 크게는 내부와 외부,
그리고 객체의 책임과 협력 관점에서 리팩토링을 진행했다.
전체 코드는 Github를 참고하는 게 낫겠다.
https://github.com/ckaanf/readable-code/tree/mission/day-7
InputHandler/OutHandler를 바라보는 관점
나는 여기서 두 클래스가 행위만 하도록 변경했다.
저 클래스에 Message를 던지고 두 객체는 입력을 받거나 출력을 하거나 하는 행위만을 실행한다.
그렇기에 입력을 받는 것은 입력을 받아야할 객체,
출력을 하는 것은 출력을 해야할 객체로 옮겼는데.
생각해보니 그렇게 하니 입출력의 변경에 따라 객체에 변경사항이 생긴다는 관점이 있었고,
"입/출력 양식" 이것이 과연 객체가 가지고 있어야 할 책임인가? 에 대해 다시 생각해보게 되었다.
중복 제거
80%가 똑같고 20%만 다른 로직들에 대한 중복제거
즉 거의 대부분은 비슷하나 살짝의 분기문이나 팩터의 추가로 달라지는 로직에 대해서 어떻게 처리해야하나 고민이 있었다.
이 부분을 Optional로 강의에서는 해결하는 데, 나는 그 부분까지는 고려하지 못했으나 비슷하게는 처리했다.
그러나 null 객체에 대한 안정성이 좀 떨어지는 것 같아 강의를 보고 다른 관점에 대해 알게 됐다.
🤔 내 생각을 정리하자면
확실히 이론적인 것을 실제로 적용하려하니 아직은 어색하고 머리가 굳는 듯한 느낌을 받았다.
역시 의도적으로 자주 생각하고 적용해보는 것이 중요할 것 같다.
여담으로 중간 점검에서 다양한 질문들과 다른 분들에 대한 코드 리뷰까지 정성스레 해주시는 것을 보고
정말 괜찮은 강의를 골랐고, 인프런 워밍업 클럽이 좋은 기회였다는 것을 다시 한번 느끼게 됐다.
댓글을 작성해보세요.