플라즈밍
플라즈마 IT
플라즈밍
  • All (163)
    • MindSet (2)
    • Wisdom (8)
    • Book (18)
    • [Web] (6)
      • [Web]Guide (2)
      • [Web]HTML-CSS-JS (1)
      • [Web]ReactJS (0)
      • [Web]NextJS (1)
    • 퀀트주식투자 (4)
      • [리포트]포트폴리오 (4)
    • 자산배분전략 (2)
      • [리포트]자산배분전략 (1)
    • 포트폴리오 (0)
      • 발걸음 (0)
    • 개발 Note (3)
    • TipNote (5)
    • 알고리즘 (27)
      • 백준[BOJ] 오답노트 (27)
      • 백준[BOJ] 강의 정리 노트 (0)
    • etc-posts (18)
      • Unity :: C# 튜토리얼 (18)
    • Web&Know (23)
    • 끄적임 (4)
    • 세상이슈 (0)
    • Youtube 유튜브 (3)
      • Youtube 채널소개 (3)
    • 창업 Know&Idea (1)
    • Web&Dev (4)
    • 프로젝트 (6)
      • Unity5 Project (3)
      • UnrealEngine4 Project (2)
      • Web Page (1)
    • 주가차트-기술적분석 (2)
    • BlockChain (7)
    • SystemDesign (11)

인기 글

최근 글

hELLO · Designed By 정상우.
플라즈밍

플라즈마 IT

[마틴 파울러] 개발자 리팩토링의 중요성, TDD, 테스트 코드를 짜는 이유
[Web]

[마틴 파울러] 개발자 리팩토링의 중요성, TDD, 테스트 코드를 짜는 이유

2022. 11. 15. 19:32
반응형

리팩토링의 중요성 feat.테스트 코드를 짜는 이유(한글 자막)

 

https://www.youtube.com/watch?v=mNPpfB8JSIU

아래 글로 리팩토링을 3분 만에 이해 하자..

✅ 리팩토링 워크플로우

 

리팩토링 절차 : 테스트 코드 > 기능 구현 > 리팩토링 

리팩토링 절차 (TDD Refactoring)

  1. 테스트를 통과 못한 빨간불 상태에서 시작
    1. 적적한 테스트 시나리오를 고려 ( happy path, exception path, exist path)
    2. Unit Test  추가.
    3. 테스트는 잘되는 케이스, 예외 케이스, 하위 호환성을 모두 만족시켜야 한다.
  1. 우선 기능을 작동하게 만든다. 완벽하게 만들 필요 없다. ( 새로운 기능 추가 및 개선 ) -- step1
  2. 코드 스멜에 대해 리팩토링을 진행한다 ( 클리닝 ) -- step 2 
  3. 테스트를 모두 통과하면 리팩토링 종료 

 

코딩할 때는 기능 추가 모드와 리팩터링 모드를 왔다 갔다 한다.

 

왜 2단계로 쪼개서 진행을 하는가?

우리가 가진 모드 2가지 

  • 기능 추가 모드(1)
  • 리팩 토링 모드(2)

리팩토링 주의점

  • 리팩토링은 같은 기능을 하되 코드 구조를 변경하는것
  • 심지어 버그가 발견되어도 고치면 안 된다.
  • 항상 개발 시 어떤 모자를 쓰고 있는지 인지해야 한다.

다른 유사한 모드도 있다.

  • 성능개선 모드(3) : 더 좋은 퍼포먼스로 코드를 수정
  • 탐험 모드(4) : 새로운 아이디를 녹이고 버리는 모드

 

리팩토링을 해야 하는 상황

리팩토링을 할까 말까 고민될 때, 기준점들이 있다.

 

리팩토링의 상황 - 1 : 냄새나는 코드를 발견

  • 조금씩 고친다.
  • 조금씩 고쳐 나가다 보면 전체가 깔끔해진다.
  • 쓰레기 줍기 리팩토링

리팩토링의 상황 - 2 : 코드를 보고 이해 불가

  • 파편화하며 퍼즐 조각으로 나누고 이해한다.
  • 이렇게 파편화된 지식(스파게티 코드) 리팩토링하여 머릿속 로직을 코드에 녹이는 것
  • 이해하기 위한 리팩터링

리팩토링의 상황 - 3 : 새로운 기능이 기존 코드에 잘 녹을때

  • 코드가 왜 이렇게 작동하는지 모르겠다.
  • 여기다가 또 기능을 추가한다고?
  • 준비를 위한 리팩토링

리팩토링의 상황 - 4 : 리팩토링 계획 세우기

  • 프로젝트의 목표 중에 리팩토링을 추가한다.
  • 그렇다고 억지로 찾을 필요는 없다.
  • 계획된 리팩토링(Planned)

리팩토링의 상황 - 5 : 복잡하게 모듈의 의존성을 가질 때

  • 장기적인 리팩토링(Long-Term)

리팩토링 시점

  1. 지금 우리가 당장 고쳐야 하나?
  • 지금 하는 일에 지장이 없고, 시간이 얼마나 걸리는지 판단
  • 메서드, 변수 이름 변경 등은 금방 한다.
  • 당장의 기능 개발(미통과 테스트)가 있다면 이슈 티켓을 만들어두고 나중에 작업
리팩토링은 장기적인 관점에서 바라봐야 한다

✅ 리팩토링이 중요한 이유

주니어일 때 개발자들은 코드를 변경하지 않으려 했다.

  • 한 번 더 일하고 시간 낭비라고 생각.
  • Design Stamina Hypothesis.
  • No Design : 프로젝트가 커질수록 -> 기능 추가가 어렵다.
  • Good Design : 프로젝트가 커져도 오히려 -> 기능추가가 쉽다.
단 하나의 이유 : 경제성

 

 

 

 

키워드 TDD, 개발, 클린 코드, 테스트 주도 개발

반응형
저작자표시 비영리 (새창열림)

'[Web]' 카테고리의 다른 글

[개발] 유용한 링크 정리, FrontEnd 개발자 책,문서 추천 링크 모음  (0) 2022.11.15
    '[Web]' 카테고리의 다른 글
    • [개발] 유용한 링크 정리, FrontEnd 개발자 책,문서 추천 링크 모음
    플라즈밍
    플라즈밍
    퀀트 주식투자 자산배분 데이터분석 정보 공유 프로그래밍,투자 주제의 책 강의 리뷰 노하우 전수

    티스토리툴바