![클린 코드 : 함수](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDt52Y%2FbtsIizkEPGu%2F0vNewIQkp6Cgeh8O9LkR8K%2Fimg.png)
함수
작게 만들어라
- 함수를 작게 만들자
- 모든 함수를 정말 작게 못해도 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
'도서' 카테고리의 다른 글
클린코드 : 객체와 자료 구조 (0) | 2024.07.07 |
---|---|
클린코드 : 형식 맞추기 (0) | 2024.07.07 |
클린 코드 : 주석 (0) | 2024.07.07 |
클린 코드 : 의미 있는 이름 (0) | 2024.06.29 |
클린 코드 : 깨끗한 코드 (0) | 2024.06.29 |
하고 싶은 걸 하고 되고 싶은 사람이 되자!
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!