독서

책01. 파이브 라인즈 오브 코드 02. 리팩토링 깊게 들여다보기

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

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

2장. 리팩토링 맛보기

말그대로 리팩토링 기법 맛보기 느낌이다. 뭔가 다 아는 내용 엄밀하게 말하기 느낌이랄까.. 역시나 도움이 되었다.


2장을 읽으며 느낀점과 고찰

  • 전역변수는 지양하자리팩토링의 이유 중 하나인 가독성면에서도 전역변수 사용이 오히려 유리할 수있다. dfs 탐색을 예로서 떠올려보자. 매번 dfs에서 다뤄야하는 객체들을 매개변수로 바리바리(바리스타) 싸들고 다니는걸 보면 오히려 어지러울 때가 많다고 느끼기 때문이다.
  • 근데 막상 코딩테스트 볼때는 전역변수가 선택이 아닌 필수로서 사용중이다.. 하나의 변수를 예쁘게 포장해서 옮기며 안전하게 수정하기보다는, 빠르게 변수에 접근해서 다양한 메소드로 변수값을 휙휙 바꿔야하기 때문이다. 목적에 따라서 필요할수도 있겠다는 생각이든다.
  • 리팩토링 범위설정 잘하자(블랙박스 크기 설정)
  • 객체지향원칙과 리팩터링은 유사하다.
  • 상속과 컴포지션을 비교하면서, 유연성에대해 설명하고 개방-폐쇄 원칙에대해 얘기하는데 소름이 돋았다. 리팩토링과 내가 들었던 SOLID원칙과 이어지는 점이 어찌보면 자명한데, 반가웠다.

2장 대충요약

2.1 가독성 및 유지 보수성 향상

  • 가독성
    • 주석달기
    • 변수/메소드/클래스/파일 명 작명 센스
    • 공백사용.
    • 이중부정등 소소한 팁.
  • 유지보수성
    • 얼마나 많은 후보를 조사해야ㅎ는지 나타내는 표현
    • 취약성의 근원 : 전역상태
    • 불변속성: 코드에서 상태(조건)를 명시적으로 확인하지 않는 속성.
    • 함께변하는것은 함께있어야한다 : 불변속성의 범위제한

2.2 속도, 유연성 및 안정성 확보

  • 상속보단 컴포지션쓰자

  • 확장에 열려있고 수정에 닫혀있는 의미.. 마치 update말고 insert를 쓰는 느낌이다. 확실히 상속을안하고 컴포지션시에는, 상속받은 canswim을 변경하는것이아닌, canswim을 추가한다는 말이 맞다.

  • 이러면 이제 다른 코드에 영향도 안주고, 기존코드 보존이 가능해 프로그래밍 속도 up!

2.3 리팩터링과 일상 업무

  • 평소에 리팩토링을 자주해서 기술 부채를 없애자.

2.4 소프트웨어 분야에서 ‘도메인’정의하기

  • 실생활을 소프트웨어로 옮길때, 도메인 정의가 중요하다

2장 정리(사실 책에서 매 장마다 요약해준다)

  • 리팩터링은 기능 변경없이 코드의 의도를 전달하고 불변속성의 범위를 제한하는것
  • 상속보다 컴포지션을 사용해 추가를통한 변경으로 개발 속도, 유연성, 안정성을 확보해라
  • 리팩터링을 일상 업무에 포함시켜 기술 부채가 쌓이지 않도록해라.
  • 리팩터링 연습하면 코드에 대한 독특한 관점을 얻어 더 나은 해결책을 찾을 수 있다.