반응형
긴 코드 조각내기
혼란스러운 코드 원인
- 여러가지 일을 수행하는 메서드
- 낮은 수준의 원시 연산(배열조작, 산술연산)
- 사람이 읽을 수 있는 텍스트 부족
규칙: 다섯줄 제한
"메서드는 공백, {, }를 제외하고 5줄 이상이 되서는 안된다"
- 메서드가 길면 한 번에 긴 메서드의 모든 논리를 머릿속에 담아야 해서 작업하기 어렵다 => 스멜
- 메서드는 한가지 작업만 담당해야 하며 상황에 따라 다르지만 보통 한 기능은 5줄 정도로 끝나는 경우가 많다.
- 메소드를 반으로 나눠 도우미 메소드를 호출하는 식으로 변경하여 줄여나가기
함수 분해를 위한 리팩터링 패턴
- 추출할 부분 찾기
- 동일한 작업을 하는 데 필요한 줄을 식별하려 그룹화 시킨다.
- 이때 그룹간 구분은 빈줄이나 주석을 활용한다
- 원하는 이름으로 새로운 비어있는 메소드 생성
- 그룹 맨 위에서 새로운 메소드 호출
- 그룹의 모든 줄을 선택해서 잘라내어 새로운 메소드 본문에 붙여넣기
- 컴파일
- 매개변수를 도입하여 호출하는 쪽의 오류 발생시키기
- 매개변수를 반환값으로 할당해야 하는경우 새로운 메서드 마지막에 return 타입 추가하고, 새로운 메소드를 호출하는 쪽에서 받기
- 컴파일
- 파라미터 전달하여 컴파일 에러 잡기
- 사용하지 않는 빈줄과 주석 제거
자신감이 떨어지는 예쁜 코드를 만드는 것보다 특이하게 생긴 안전한 코드를 만드는게 낫다
추상화 수준을 맞추기 위한 함수 분해
"메서드는 호출 또는 전달 한가지만 할 것"
- 하나의 메서드 내에서 객체에 있는 메서드를 호출하거나 객체를 매개변수로 전달할 수 있지만, 둘다 해서는 안된다.
- 함수의 내용은 동일한 수준의 추상화에 있어야 한다.
좋은 함수 이름의 속성
- 함수의 의도를 설명해야 한다.
- 함수가 하는 모든 것을 담아야 한다.
- 도메인에서 사용하는 단어를 사용한다. -> 이해도 증가
너무 많은 일을 하는 함수 분리하기
"if문이 있는 경우 해당 if문은 함수의 첫 번째 항목이어야 한다."
- if문 자체가 하나의 확인 작업이므로 하나의 메소드로 분리해야한다.
- else if는 if문과 분리할 수 없는 원자 단위로 본다. -> if문을 분리 할 때 else if 도 함께 분리한다.
- 메소드 추출을 이용해 분리한다.
반응형
'스터디 > Five Lines of Code' 카테고리의 다른 글
7장 컴파일러와의 협업 (1) | 2023.11.04 |
---|---|
Five Lines of Code 6장. 데이터 보호 (1) | 2023.10.29 |
Five Lines of Code 5장 유사한 코드 융합하기 (0) | 2023.10.21 |
Five Lines of Code 4장 타입 코드 처리하기 (1) | 2023.10.14 |
Five Lines of Code 1-2장 리팩터링이란 (0) | 2023.09.20 |