inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

Depth
0

 

강의 수강

 

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가 관점에 따라 누군가에게는 그렇지 않을수도 있다는 생각이 든다.

 

 

출처

백엔드 워밍업클럽 클린코드 2기 depth my

답변 0