도서

클린 코드 : 함수

스루나루 2024. 6. 29. 15:59
728x90
728x90

 

함수 

 

작게 만들어라 

- 함수를 작게 만들자 

- 모든 함수를 정말 작게 못해도 4-6줄 정도로 줄여야 하나본데? 이러면 로직 넣을 구멍이 있나...?

 

한 가지만 해라! 

- 함수는 한 가지를 해야 한다. 그 한 가지를 잘 해야한다. 그 한가지만을 해야 한다

 

 

추상화 수준 참고 

https://onestone-dev.tistory.com/3

 

[CleanCode] 함수의 추상화 수준이란?

오랜만에 CleanCode를 다시 읽어보고 있는데 함수의 추상화 수준에서 책 읽기를 멈추고 3번 다시 읽었다. 아무래도 책의 추상화 수준이 높은 단계 였던 것 같다. "메서드는 한 가지만 해라!"라는 말

onestone-dev.tistory.com

 

Switch 문 

- 일반적을 잘 안 쓰는 것이 좋다고 함 

- 다형적 객체를 생성하는 코드 안 에서 한 번정도 봐준다 

 

public abstract class Employee {
	public abstract boolean isPayday();
	public abstract Money calculatePay();
	public abstract void deliverPay(Money pay);
}
-----------------
public interface EmployeeFactory {
	public Employee makeEmployee(EmployeeRecord r) throws InvalidEmployeeType; 
}
-----------------
public class EmployeeFactoryImpl implements EmployeeFactory {
	public Employee makeEmployee(EmployeeRecord r) throws InvalidEmployeeType {
		switch (r.type) {
			case COMMISSIONED:
				return new CommissionedEmployee(r) ;
			case HOURLY:
				return new HourlyEmployee(r);
			case SALARIED:
				return new SalariedEmploye(r);
			default:
				throw new InvalidEmployeeType(r.type);
		} 
	}
}

 

함수 인수 

- 가장 좋은거 인수 0 , 1 , 2 이 순서대로 안 좋아짐 

- 테스트 관점에서 인수 있는게 더 빡셈 

 

플래그 인수 

- 플래그 인수는 추하다. 인수의 참거짓에 따라 로직이 분리가 되니까 근데 이거 없으면 뭐 어떻게 처리하냐;;; 

 

인수 객체 

- 인수가 2-3개 필요하다면 그냥 독자적인 클래스 변수로 선언하는 가능성도 염두해두자

- 눈속임 같지만 개념을 표현하기에 봐준다 

 

부수효과 일으키지마라 

부수 효과
함수의 실행으로 함수 외부 상태가 변경되는 것을 뜻합니다.

 

Try/Catch 블록 뽑아내기 

- try/catch 블록 안에서 사용되는 로직을 메서드화 해서 처리하는 것이 깔끔하다

- 정상동작과 오류 처리 동작을 구분하자 

 

 

 

참고

 

https://product.kyobobook.co.kr/detail/S000001032980

 

Clean Code(클린 코드) | 로버트 C. 마틴 - 교보문고

Clean Code(클린 코드) | 프로그래머, 소프트웨어 공학도, 프로젝트 관리자, 팀 리더, 시스템 분석가에게 도움이 될 더 나은 코드를 만드는 책『Clean Code(클린 코드)』은 오브젝트 멘토(Object Mentor)의

product.kyobobook.co.kr

 

728x90
728x90