이 영역을 누르면 첫 페이지로 이동
codesche's blog 블로그의 첫 페이지로 이동

codesche's blog

페이지 맨 위로 올라가기

codesche's blog

chap14-점진적인 개선

  • 2023.04.07 21:01
  • Study Cafe/Clean Code 스터디

목차

  1. 책의 예제
  2. 점진적으로 개선하기
  3. IDE를 활용해 점진적으로 개선하기

1. 책의 예제

명령형 인수 구문 분석기

코드 초안

  • 모든 로직이 하나의 클래스에 들어가 있다.
  • 처음부터 지저분한 코드를 짜려는 생각은 없었고, 코드를 어느 정도 손봤지만 새로운 인수 유형이 들어오면서 문제가 발생했다.
  • 이제는 개선해야 할 때라는 걸 깨닫고, 변경 전후 시스템이 동일하게 돌아간다는 사실을 확인하기 위해 테스트들을 작성해두었다.
  • 점진적으로 개선해나갔다.

image

코드 완성본

  • Args 클래스에서 코드 중복을 최소화하고, ArgsException 클래스를 분리했다. ArgumentMarshaler 클래스를 통해 여러 인수에 대한 추후 확장성을 만들어냈다.
  • 코드만 분리해도 설계가 좋아진다. 관심사를 분리하면 코드를 이해하고 보수하기 훨씬 더 쉬워진다.

책의 예제를 통해 배울 점

  • 한번 정도 따라 읽어가며 저자가 '점진적으로' 코드를 개선해나가는 사고 흐름을 따라가면 좋다.
  • 부담없이 가볍게 읽어본다. 자신이 스스로 점진적으로 코드를 개선해보는 경험을 통해 더 많이 배우게 된다

2. 점진적으로 개선하기

점진적으로 개선하기

image

=> 프로그램을 망치는 가장 좋은 방법 중 하나는 개선이라는 명분 아래 구조를 크게 뒤집는 행위다

3. IDE를 활용해 점진적으로 개선하기

Extract Method : 메서드 추출 기능

코드 블럭을 메서드로 추출할 수 있다

image

Change Signature : 메소드 파라미터 추가, 삭제 및 변경

메서드의 파라미터를 추가하거나 변경할 수 있다

image

Rename : 이름 변경

메서드나 변수 이름을 변경할 수 있다

image

Extract Variable : 변수 추출 기능

변수를 추출할 수 있다

image

Extract Field : 멤버 변수 추출 기능

특정 값을 멤버 변수로 설정할 수 있다

image

Extract Constant : 상수 추출 기능

특정 값을 상수로 추출할 수 있다

image

Pull Members Up & Pull Members Down

하위 클래스의 메서드를 상위로 올리거나 & 상위 클래스의 메서드를 하위로 내릴 수 있다

image

'Study Cafe > Clean Code 스터디' 카테고리의 다른 글

chap15 & chap16-라이브러리 분석을 통해 코드를 바라보는 시각 기르기  (0) 2023.04.09
chap13-동시성  (0) 2023.04.07
chap12-창발적 설계  (0) 2023.03.31
chap11-관심사 분리 패턴들  (0) 2023.03.30
chap10-클래스 잘 설계하기  (0) 2023.03.29

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • chap15 & chap16-라이브러리 분석을 통해 코드를 바라보는 시각 기르기

    chap15 & chap16-라이브러리 분석을 통해 코드를 바라보는 시각 기르기

    2023.04.09
  • chap13-동시성

    chap13-동시성

    2023.04.07
  • chap12-창발적 설계

    chap12-창발적 설계

    2023.03.31
  • chap11-관심사 분리 패턴들

    chap11-관심사 분리 패턴들

    2023.03.30
다른 글 더 둘러보기

정보

codesche's blog 블로그의 첫 페이지로 이동

codesche's blog

  • codesche's blog의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그
  • 방명록

카테고리

  • 분류 전체보기 (76)
    • Algorithm (15)
      • 백준 (3)
      • 프로그래머스 (10)
      • inflearn 알고리즘(Java) (2)
    • 블로그소개 (1)
    • Back-End (11)
      • Java (10)
      • SpringBoot (1)
    • Database (2)
      • MySQL (0)
      • MariaDB (1)
      • Redis (0)
      • 개념, 이론 (1)
    • Front-End (0)
      • html, css, javascript (0)
    • Git (2)
    • 알고리즘 지식 (11)
      • 자료구조 (11)
    • Study Cafe (21)
      • 기술면접 (6)
      • Clean Code 스터디 (14)
      • CS 스터디 (0)
      • 개발용어 (1)
    • 주간 에세이 (10)
    • DevOps (3)
      • 배포, Front&Back 연동 (1)
      • AWS (0)
      • Docker (1)
      • 이론 (1)

최근 글

인기 글

댓글

공지사항

아카이브

태그

  • 자료구조
  • 주간에세이
  • 개발자 현실
  • 클린코드
  • java
  • 자바 기초
  • 자바 변수
  • git commit

나의 외부 링크

정보

The Code의 codesche's blog

codesche's blog

The Code

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © The Code. Designed by Fraccino.

티스토리툴바