인프런 워밍업 클럽 스터디 2기 - 백엔드 클린코드, 테스트코드 2주차 발자국

인프런 워밍업 클럽 스터디 2기 - 백엔드 클린코드, 테스트코드 2주차 발자국

 

강의 수강

 

Section6) 코드 다듬기

  1. 좋은 주석인란?
    -

    우리가 가진 모든 표현 방법을 총동원해 코드에 의도를 녹여냈음에도 불구하고 전달해야할 정보가 남았을때 주석을 사용해야 함. 주석을 사용하면 코드가 아닌 주석에 의존한다는 것을 알아야 함

     

     

     

  2. 변수와 메서드의 나열 순서
    - 변수는 사용하는 순서대로 나열
    - 메서드는 1순위가 공개 메서드, 2순위가 비공개 메서드 순으로 나열

     

     

     

     

     

  3. Intellij IDE 활용
    - 코드 포맷 정렬 단축키 : Ctrl + ALT + L
    - Sonarlint : 오류, 버그, 스타일 등을 알려주어 문제점 개선을 도와주는 Plugin
    - .editorConfig : 확장자마다 스타일을 다르게 줄수 있게 도와주는 설정파일

 

Section7) 리팩토링 연습

  1. 리팩토링 포인트
    - 추상화 레벨 : 중복 제거, 메서드 추출, 객체에 메시지 보내기
    - 객체의 책임과 응집도 : IO 통합, 일급 컬렉션, display()의 책임, Order 객체
    - 관점의 차이로 달라지는 추상화 : 구현에 초점을 맞춘 추상화 VS 도메인 개념에 초점을 맞춘 추상화

 

Section8) 기억하면 좋은 조언들

  1. 능동적 읽기
    - 복잡하거나 엉망인 코드를 읽고 이해하려 할때, 리팩토링하면서 읽기
    -> 공백으로 단락 구분


    -> 주석으로 이해한 내용 표기하며 읽기
    -> 메서드객체로 추상화 해보기
    - 핵심 목표는 우리의 도메인 지식을 늘리는 것이고, 이전 작성자의 의도를 파악하는 것.

    2. 오버 엔지니어링
    - 필요한 적정 수준보다 더 높은 수준의 엔지니어링을 말함
    -> ex) 구현체가 하나인 인터페이스 : 구현체를 수정할 때마다 인터페이스도 수정해야 함.
    -> ex) 너무 이른 추상화 : 정보가 숨겨지기 때문에 복잡도가 높아지고, 후대 개발자들이 선대의 의도를 파악하기가 어려움

     

     

    3. 은탄환은 없다
    - 항상 정답인 기술은 없음.
    - 오버 엔지니어링이 되더라도 한계까지 리팩토링 연습을 해보고, 적정 수준, 적정 시점을 깨닫기가 필요.

 

회고)

2주차까지 쉼 없이 달려왔는데, readable code 강의가 끝난것이 끝이 아니라, 새로운 시작인 것 같다.
이 강의를 통해 클린코드로 가는 발검을을 한 발자국 내딛은것 같다. 클린코드 책도 한번 읽어봐야 겠다는 생각도 들었다.
3주차부터 Practical Testing 강의가 시작되는데, 테스트 코드 강의도 빠짐없이 수강하여 포기하지 않고 스터디를 끝까지 이어 나갈 것이다.

 


미션

Day7-Mission3) '스터디 카페 이용권 선택 시스템' 프로젝트 리팩토링

리팩토링 진행 내용

  1. 코드 중복 제거


    - if문 내에 중복된 지역 범위 코드들을 전역화

  2. 메서드로 추출
    - 동일한 맥락의 코드들을 메서드화

  3. NullPointException 방지
    - Null 값 처리를 위한 Optional 사용

  4. 메서드 오버로딩 추가
    - Null 매개변수 사용을 외부에 드러내지 않기 위해 메서드를 오버로딩하여 사용


Github Code

 

회고
- 추상화 관점에서의 리팩토링을 어느정도 진행하였는데, 객체의 책임과 응집도 관점에서 좀 더 리팩토링을 진행해야 겠다는 생각과 함께 리팩토링에는 끝이 없다는 것을 느끼고 있다. 어쩌면 내가 진행한 readable한 code가 관점에 따라 누군가에게는 그렇지 않을수도 있다는 생각이 든다.

 

 

출처

댓글을 작성해보세요.

채널톡 아이콘