워밍업 클럽 3기 BE 클린코드&테스트 - 2주차 발자국
회고
03/10~03/14
리팩토링 코드 다듬기
클린코드 리팩토링 실습
리팩토링 연습
단위 테스트 TDD
이번주의 주된 강의 주제는 '리팩토링' 이다. 저번주 강의를 듣고 배운 내용을 코드에 직접 리팩토링에 적용해보면서 익히는 것이다.
강의를 듣고 내용을 이해하고 어느정도 알고 있다고 생각을 했지만, 직접 해보는 것은 역시 쉽지 않은 일이였다. 뭐부터 시작해야할지, 어떻게 해야 좋은 코드로 리팩토링 하는 것인지에 대해서는 감이 잘 안잡혔다. 내가 이 부분에 대해서 경험이 부족하고 생각하는 시간이 부족했던 것이 컸다.
일주일 동안 다른 일정과 더불어 바쁜 날들을 보냈는데, 해야할 일이 많다보니 한가지 일에 집중하는 시간들이 부족했다. 급한 마음이 몰입에 방해가 되었던 것 같다. 한가지 일을 하더라도 제대로 몰입해서 해야겠다고 생각이 들었다. 다음 주도 바쁜 일정이 예정되어 있는데 이번에는 적은 시간이라도 그 시간 안에서 두려워하지 않고, 내가 지금 할 수 있는 작은 일에 포커싱하여 작은 부분이라도 개선하는 시간을 가져보겠다.
학습 내용
능동적 읽기
복잡하거나 엉망인 코드를 읽고 이해하려 할 때, 리팩토링하면서 한 줄 한줄 읽기
공백으로 단락을 구분하기
메서드와 객체로 추상화 해보기
주석으로 이해한 내용을 표기하면서 읽기
언제든 돌아갈 수 있는 git reset --hard 가 있으니 두려워하기보다는 실행해보자.
오버 엔지니어링
필요한 적정 수준보다 더 높은 수준의 엔지니어링
종종 구현체가 하나인 인터페이스를 만드는 경우가 있었다. 내가 하나의 구현체라도 인터페이스를 만드는 이유는 아키텍처에 이해를 도와주도록 하거나, 팀에서 협업을 하면서 명세를 먼저 작성해서 구현체에 종속되지 않고 각자 구현해야하는 내용을 재사용하기 위해서라고 생각했다.
인터페이스 형태가 아키텍처 이해에 도움을 주거나, 근시일 내에 구현체가 추가될 가능성이 높다면 OK
구현체를 수정할 때마다 인터페이스도 수정해야하는 단점이 존재
코드 탐색에 영향을 주고 어플리케이션이 거대해짐
너무 이른 추상화로 정보가 숨겨지기 때문에 복잡도가 높아지고 의도를 파악하기 어렵다
주석의 양면성
평소에 주석을 잘 사용하지 않았다. 팀 프로젝트를 잘 하지 않았고, 주석을 작성하기 보다는 코드로 의미를 나타낼 수 있도록 표현하려고 노력했기 때문이다. 물론 잘 되지는 않은 부분도 많지만 주석을 잘 사용하지 않았던 이유이다.
앞으로도 주석보다는 추상화를 통해서 어떤 의도를 나타내려고 노력할 것 같은데, 주석이 필요한 경우를 만나보고 싶다.
변수와 메서드의 나열 순서
나름 나만의 방식을 가지고 지금까지 변수와 메서드를 나열해왔는데, 이유에 대해서 생각해보고 이점에 대해서 알게되었다.
인지적 경제성
뇌 메모리 사용을 절약
메서드의 경우에도 순서를 고려해야하는데, 이 부분에 대해서 강사님의 생각을 엿볼 수 있었다.
상태 변경 >> 판별 >= 조회메서드
비공개 메서드는 공개 메서드에서 언급된 순서대로 배치한다.
공통으로 사용하는 메서드라면 하단쪽 적당한 곳에 배치한다.
중요한 것은 나열 순서로도 의도와 정보를 전달할 수 있는것이다.
코드 리뷰 타임과 중간 점검
금요일에 다른 사람들의 코드를 리뷰해주시는 시간을 가졌었다. 다른 사람의 코드를 보면서 나와 다른 점을 알 수 있고 더 좋은 방법에 대해서 사고를 확장할 수 있는 시간이였다. 강사님이 다른 사람들의 코드를 많이 보는게 좋다고 하셨는데 앞으로 조금씩이라도 다른 사람의 코드를 읽어보는 시간을 가질 것이다. 궁금한건 다른 사람들은 코드를 리뷰할 때 모든 코드를 하나하나 꼼꼼히 읽으면서 진행하는지? 시간을 얼마나 투자하는지? 이런 부분이 궁금하다.
다음 주에는 테스트 관련 인강을 듣고 정리하며 학습하는 기간이다. 테스트 코드에 대해서 관심이 있었고, 어떻게 공부해야하는지 고민하다 학습을 하지 않았는데, 이번 기회에 그냥 해보자라는 마음가짐으로 학습 시간을 가질 예정이다. 이번 주에는 어제의 나보다 오늘의 내가 더 나은 시간들이 되기 위해 노력하겠다.
댓글을 작성해보세요.