독서

책01. 파이브 라인즈 오브 코드 01. 리팩토링 리팩토링

제비랑 2024. 1. 31. 23:36

파이브 라인스 오브 코드 - 크리스찬 클라우젠

독서..

현재 다니고 있는 싸피에서 친구들과 책을 읽기로 했다.

이번에 읽을 책은 파이브라인즈 오브 코드 이다. 코드 리팩토링에 관련된 책이다.

책에 대한 전반적인 요약은 목차 수준으로 할 거 같다.

책을 읽었을때의 나의 감정과 인상적이었던 책의 내용, 내용으로 비롯된 나의 사고 흐름에 대해 기록하고자 한다.


1장을 읽고 느낀점..

리팩토링은 기능구현에 의의를 두기보단, 기능 개발이 끝나고 지속성 있는 코드를 만들기 위해 필요하다는 생각이 든다.

책이 다양한 규칙을 소개하고, 실습위주의 내용이라, 책 내용을 따라 갔을때 리팩토링에 대한 가닥이 잡히길 기대한다.

객체지향 언어를 기반으로 한 리팩토링 유형들이다. 그만큼 객체지향언어가 가독성과 유지보수에서 강력하다는 생각이 들기도 한다.


1장 내용 대충 요약

1장. 리팩터링 리팩터링하기

what is 리팩토링?

  • 기능을 변경하지 안하고 코드 가독성높이고, 유지보수용이하게 하는것.

why 리팩토링?

  • 코드 더 빠르게(속도)
  • return pow(base, exp/2) \* pow(base, exp/2); -> let result = pow(base,exp/2); return result \* result;
  • 코드 더 작게(공간)
  • 코드를 일반적이거나 재사용 가능하게
  • 가독성을 높이고 유지보수를 용이하게 하기 위해

which one 리팩토링할래

  • 코드스멜
  • 문제가 될만한 소스코드의 특징
  • 규칙
  • 코드스멜을 좀더 정형화함.

how 리팩토링

  • 정석은 코드스멜이 나는 코드를 단위테스트를 가지고.. 하는것.

when 리팩토링할래?

  • 레거시 시스템
  • 정기적으로

when NOT 리팩토링 하지마!

  • 폐기전 코드
  • 한번실행하고 말 코드
  • 임베디드나 게임 고급물리엔진처럼 엄격한 요구사항 있는 코드

어떤도구로 리팩토링할래?

  • best : 자동화된 테스트를 곁들이기
  • 구조화된 패턴(규칙)
  • 컴파일러, git

1장 정리

  • 리팩터링을 수행하려면 리팩터링 대상을 식별하는 스킬과 리팩터링 단계를 명시적으로 가진 문화. 리팩터링을 돕는 도구의 조합이 필요
  • 일반적으로 코드스멜은 리팩토링 대상을 설명하는데 사용. 모호하므로 구체적인 규칙을 기반으로 설명할것.
  • 자동화된 테스트 / 리팩토링을 별도로학습시 리팩토링 진입장벽이 낮아짐. 자동화테스트 대신 컴파일러,버전관리,수동테스트사용.
  • 리팩터링작업 절차 레드-그린-리팩터 반복에서 테스트 주도 개발로 연결됨. 이는 자동화된 테스트에 의존한다는 뜻. 이를 대신해서새로운 코드를 만들때 탐색-명세화-구현-테스트-리팩터링-전달 6가지 단계를 사용하거나 코드를 변경하기 직전에 리팩터링을 수행하도록 권장.