[스터디] 리팩터링_chapter 1

김하은·2024년 4월 29일
0

스터디

목록 보기
18/23

리팩터링이란

리팩터링은 겉으로 드러나는 코드의 기능 (겉보기 동작)은 바꾸지 않으면서 내부 구조를 개선하는 방식으로 소트프웨어 시스템을 수정하는 과정이다.

1장 내용

1장에서는 간단한 예시 코드를 가지고 리팩터링의 전반적인 과정을 보여주고 있다.
그 다음 챕터들에서 배울 내용들을 미리 맛보는 식이었다.
이해되는 부분도 있었고 그렇지 않은 부분도 있었다.

리팩터링의 첫단계는 테스트 코드를 마련하는 것이다.

래팩터링하기 전에 제대로 된 테스트부터 마련한다. 테스트는 반드시 자가진단하도록 만든다.

내가 저지름 실수로부터 보호해주는 버그 검출기 역할을 해주기 때문인다.

  • 가장 필요하면서도 가장 귀찮은 단계라고 생각한다. 하지만 책에도 나와있듯이 잘 만들어두면 디버깅 시간이 줄어서 전체 작업 시간이 오히려 단축시킬 수 있다. 4장에서 테스트하는 방법을 배울 수 있다.

statement() 함수 쪼개기

  • 나도 코드를 짤 때 큰 단위의 함수는 기능별로 쪼개서 코드를 짰다. 하지만 그저 느낌?으로 수행했지 원칙을 두지는 않았다.이 책에서 그 원칙을 배우고 싶다.

아무리 간단한 수정이라도 리팩터링 후에는 항상 테스트하는 습관을 들이는 것이 바람직한다.

조금씩 변경하고 매번 테스트하는 것은 리팩터링 절차의 핵심이다.

  • 필겸님이 컴파일-테스트-커밋을 컴테커라고 했는데, 책에서는 컴테커를 굉장히 자주 했다. 이 점은 본 받아서 나도 습관으로 만들어야겠다고 생각했다.

  • 책에서 함수 추출하기, 변수 인라인하기, 반복문 쪼개기 등을 사용해서 리팩터링 하는 과정을 보여줬다. 아직까지는 어느 단계에서 이것들을 수행해야 옳은지 판단하는 게 어렵다.

아직은 이해하기 어려운 개념들

  • 중첩함수는 뭐고, 왜 중첩함수가 난무하면 안되지?
  • 반복문을 왜 쪼갰지?
  • '가변 데이터는 금방 상하기 때문에 나는 데이터를 최대한 불변처럼 취급한다.'의 의미를 모르겠다.
  • 중간 데이터의 정확한 개념은 뭐고 왜 필요하지?
  • 어떤 데이터를 data 파라미터로 묶은 거지?
  • HTML 버전은 왜 만들어야 하는 거지?
  • 다형성이란 뭐지?

내 코드에 적용하고 싶었던 부분

  • 함수의 반환 값에는 항상 result라는 이름을 쓰기
  • 변수 인라인 하기

좋은 코드를 가늠하는 확실한 방법은 '얼마나 수정하기 쉬운가'다.

  • 이 글귀를 기억해야겠다.
profile
아이디어와 구현을 좋아합니다!

0개의 댓글