Refactoring(2)

서동수·2022년 9월 11일
0

리팩터링 2판을 공부하며 정리한 내용

코드에서 나는 악취

냄새나면 당장 갈아라 !
-켄트 벡 할머니의 육아 법칙-

악취의 종류

기이한 이름(Mysterious Name): 가독성 저하
중복 코드(Duplicated Code): 에러발생 증가
긴 함수(Long Function): 이해하기 어려움, 재사용성 저하
긴 매개변수(Long Parameer List): 사용성 저하
전역 데이터(Global Data): 버그 출몰 증가
기변 데이터(Mutable Data): 데이터 추적 어려움

뒤엉킨 변경(Divergent Change): 다양한 이유로 수정
산탄총 수술(Shotgun Surgery): 여려군데에서 수정필요(결합이 너무 심하기 때문)
기능 편애(Feature Envy): 다른 모듈과 밀접하게 상호작용 -> 산탄총 수술
데이터 뭉치(Data Clumps): 데이터가 항상 함께 쓰임
기본형 집착(Primitive Obsession): 관련된 코드가 분산
반복되는 switch문(Repeated Switches): 새로운 추가에 여기저기 업데이트

반복문(Loops): 절차형 코드 -> 사이드 이펙트
성의 없는 요소(Lazy Element): 불필요한 함수, 클래스, 인터페이스
추측성 일반화(Speculative Generality): 혹스 모를 미래를 위한
임시필드(Temporary Field): 특정 상황에만 사용, 이해도가 떨어짐
메시지 체인(Message Chains): 내부 로직의 노출
중개자(Middle Man): 단순 전달만 하는 불필요한 코드

내부자 거래(Insider Trading): 모듈 사이 데이터 거래 -> 결합도 증가
거대한 클래스(Large Class): 중복코드 증가, 뒤엉킨 변경 증가
서로다른 인터페이스의 대안 클래스들(Alternative Classes with Different Interfaces): 서로 대체하지 못하고, 재사용성 감소
데이터 클래스(Data Class): 필요한 로직이 여기저기 발생할 수 있다.
상속 포기(Refused Bequest): 상속 오용, 남용 위험
주석(Comments): 필요없는 주석은.... 냄새...

테스트 구축(Building Tests)

테스트를 자동화하고 결과를 스스로 검사하게 해야한다.

Code 
-> Expectation (함수, 기능, UI, 성능, API스펙...) 
-> Test
	-> Pass -> Refactoring
  	-> Fail
profile
devLog

0개의 댓글

관련 채용 정보