-
리팩터링 2판 - 8. 기능이동Books/리팩터링 2판 2022. 6. 17. 11:25
8-1. 챕터소개 & 포인트 정리
- 응집도 Cohension
ㆍ좋은 코드와 좋은 설계의 시작 포인트
ㆍ서로 밀접하게 연관 있는 속성( data )과 행동( method )이 함께 뭉쳐( 모듈, 클래스, 함수 )있는 정도
ㆍBad ( high coupling, low cohesion, spaghetti code )
- 모듈내 응집도는 낮고 외부 모듈간 결합도는 높다
ㆍGood ( loose coupling, high cohesion, spaghetti code )
- 이해하기 쉽고, 재사용도 높고, 유지보수하기 쉽다.
- 무엇보다, 다른 클래스/모듈의 변화에 크게 영향을 받지 않는다.
- 함수 하나당, 한가지의 일을 수행하도록 만들어 두자
- 모듈 / 클래스 하나당 한가지의 책임을 가지도록 하자
- 모듈 / 클래스 하나당 하나의 도메인을 가지도록 하자
8-2. 함수 옮기기 ( 책 8.1 )
- 함수는 연관이 있는 클래스에 두기 ( 응집도 높이기! )
- if문을 없앨 수 있다면 최대한 없애기
8-3. 필드 옮기기 ( 책 8.2 )
8-4. 문장을 함수로 옮기기 ( 책 8.3 )
- 기능을 구현, 추가, 수정할 때 어떤 부분에서 일들을 담당하고 있는지 어디에서 이것을 더 해주는게 맞는건지 생각해볼것!
- 가능하면 쓰이는 곳, 필요한 곳, 밀접하게 연관된 곳에 코드를 추가해줄 것
8-5. 문장을 호출한 곳으로 옮기기 ( 책 8.4 )
- 사용하는 곳마다 조금씩 달라지는 부분이 있다면 함수밖으로 빼준다.
- 데코레이터패턴이나 콜백함수를 이용할 것
8-6. 인라인 코드를 함수 호출로 바꾸기 ( 책 8.5 )
- 절차 지향적으로 사용되는 코드가 있다면 얼마나 내가 더 간편하게 사용할 수 있는지, 이를 대신할 수 있는 라이브러리, API, 함수 확인
8-7. 문장 슬라이드하기 ( 책 8.6 )
- 관련있는 코드끼리 묶어두기 : 변수 선언시 변수를 사용하는 곳에 최대한 가까이 둘 것
8-8. 반복문 쪼개기 ( 책 8.7 )
- 반복문에서 다른 일을 하고 있다면 나눠보기
- JS 순환 함수? 파이프라인? 공부 잘하기
8-9. 반복문을 파이프라인으로 바꾸기 ( 책 8.8 )
- 직관적이고 단계적
- for 루프 사용 x, 함수형 프로그래밍 ( 파이프라인 ) 을 만들어서 간편하고 간결하고 단원적으로 프로그래밍
8-10. 죽은 코드 제거하기 ( 책 8.9 )
- 사용하지 않는 코드는 삭제
- git으로 커밋한 상태라면 git 버전관리 시스템에 남아있음 - 히스토리를 통해서 찾을 수 있다
'Books > 리팩터링 2판' 카테고리의 다른 글
리팩터링 2판 - 10. 조건부 로직 간소화 (0) 2022.06.20 리팩터링 2판 - 9. 데이터 조직화 (0) 2022.06.17 리팩터링 2판 - 7. 캡슐화 (0) 2022.06.16 리팩터링 2판 - 6. 기본적인 리팩터링 (0) 2022.06.15 리팩터링 2판 - 3. 코드에서 나는 악취 (0) 2022.06.15