인프런 워밍업 클럽 스터디 2기 - 백엔드 클린코드, 테스트코드 2주차 발자국
강의 수강
Section6) 코드 다듬기
좋은 주석인란?
-우리가 가진 모든 표현 방법을 총동원해 코드에 의도를 녹여냈음에도 불구하고 전달해야할 정보가 남았을때 주석을 사용해야 함. 주석을 사용하면 코드가 아닌 주석에 의존한다는 것을 알아야 함
변수와 메서드의 나열 순서
- 변수는 사용하는 순서대로 나열
- 메서드는 1순위가 공개 메서드, 2순위가 비공개 메서드 순으로 나열Intellij IDE 활용
- 코드 포맷 정렬 단축키 : Ctrl + ALT + L
- Sonarlint : 오류, 버그, 스타일 등을 알려주어 문제점 개선을 도와주는 Plugin
- .editorConfig : 확장자마다 스타일을 다르게 줄수 있게 도와주는 설정파일
Section7) 리팩토링 연습
리팩토링 포인트
- 추상화 레벨 : 중복 제거, 메서드 추출, 객체에 메시지 보내기
- 객체의 책임과 응집도 : IO 통합, 일급 컬렉션, display()의 책임, Order 객체
- 관점의 차이로 달라지는 추상화 : 구현에 초점을 맞춘 추상화 VS 도메인 개념에 초점을 맞춘 추상화
Section8) 기억하면 좋은 조언들
능동적 읽기
- 복잡하거나 엉망인 코드를 읽고 이해하려 할때, 리팩토링하면서 읽기
-> 공백으로 단락 구분
-> 주석으로 이해한 내용 표기하며 읽기
-> 메서드와 객체로 추상화 해보기
- 핵심 목표는 우리의 도메인 지식을 늘리는 것이고, 이전 작성자의 의도를 파악하는 것.
2. 오버 엔지니어링
- 필요한 적정 수준보다 더 높은 수준의 엔지니어링을 말함
-> ex) 구현체가 하나인 인터페이스 : 구현체를 수정할 때마다 인터페이스도 수정해야 함.
-> ex) 너무 이른 추상화 : 정보가 숨겨지기 때문에 복잡도가 높아지고, 후대 개발자들이 선대의 의도를 파악하기가 어려움3. 은탄환은 없다
- 항상 정답인 기술은 없음.
- 오버 엔지니어링이 되더라도 한계까지 리팩토링 연습을 해보고, 적정 수준, 적정 시점을 깨닫기가 필요.
회고)
2주차까지 쉼 없이 달려왔는데, readable code 강의가 끝난것이 끝이 아니라, 새로운 시작인 것 같다.
이 강의를 통해 클린코드로 가는 발검을을 한 발자국 내딛은것 같다. 클린코드 책도 한번 읽어봐야 겠다는 생각도 들었다.
3주차부터 Practical Testing 강의가 시작되는데, 테스트 코드 강의도 빠짐없이 수강하여 포기하지 않고 스터디를 끝까지 이어 나갈 것이다.
미션
Day7-Mission3) '스터디 카페 이용권 선택 시스템' 프로젝트 리팩토링
리팩토링 진행 내용
코드 중복 제거
- if문 내에 중복된 지역 범위 코드들을 전역화메서드로 추출
- 동일한 맥락의 코드들을 메서드화NullPointException 방지
- Null 값 처리를 위한 Optional 사용메서드 오버로딩 추가
- Null 매개변수 사용을 외부에 드러내지 않기 위해 메서드를 오버로딩하여 사용
회고
- 추상화 관점에서의 리팩토링을 어느정도 진행하였는데, 객체의 책임과 응집도 관점에서 좀 더 리팩토링을 진행해야 겠다는 생각과 함께 리팩토링에는 끝이 없다는 것을 느끼고 있다. 어쩌면 내가 진행한 readable한 code가 관점에 따라 누군가에게는 그렇지 않을수도 있다는 생각이 든다.
출처
댓글을 작성해보세요.