Community

개발자 99% 커뮤니티에서 수다 떨어요!

← Go back
TIL-Assignment #05(2022.02.23[수])
#clean_code
2년 전
443


TIL (Today I Learned)

2022.02.23

오늘 읽은 범위

3장. 함수

책에서 기억하고 싶은 내용을 써보세요.

  • 함수를 만드는 첫째 규칙은 '작게!'다. 함수를 만드는 둘째 규칙은 '더 작게!'다. (p.42)

  • 함수는 한 가지를 해야 한다. 그 한 가지를 잘 해야 한다. 그 한 가지만을 해야 한다. (p.44)

  • 목록 3-4 Payroll.java

public Money calculatePay(Employee e) throws InvalidEmployeeType {

switch (e.type) {

case COMISSIONED:

return calculateComissionedPay(e);

case HOURLY:

return caculateHourlyPay(e);

case SALARIED:

return calculateSalariedPay(e):

default:

throw new InvalidEmployeeType(e.type);

}

}

위 함수에는 몇 가지 문제가 있다. 첫째, 함수가 길다. 새 직원 유형을 추가하면 더 길어진다. 둘째, '한 가지' 작업만 수행하지 않는다. 세째, SRP를 위반한다. 코드를 변경할 이유가 여럿이기 때문이다. 네째, OCP를 위반한다. 새 직원 유형을 추가할 때마다 코드를 변경하기 때문이다. 하지만 아마 가장 심각한 문제라면 위 함수와 구조가 동일한 함수가 무한정 존재한다는 사실이다. (p.47-48)

  • 함수에서 이상적인 인수 개수는 0개(무항)다. 다음은 1개(단항)고, 다음은 2개(이항)다. 3개(삼항)는 가능한 피하는 편이 좋다. (p.50)

  • 부수 효과를 일으키지 마라! 부수 효과는 거짓말이다. 함수에서 한 가지를 하겠다고 약속하고선 남몰래 다른 짓도 하니까. (p.54-55)

오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요

  • 오늘 읽은 부분은 내가 개발을 처음 배웠을 때 익혔던 클린코드의 조건들이 구체적으로 설명된 장이었다. 그 때는 단순히 이렇게 하는 것이 좋다고 하니 익히려고 했던 함수 작성 방법들이 어떤 부분에 좋은지 분명하게 알게 되었다. 지금은 읽지 않아도 각인된 '최대한 작은 함수'라든지 '한 가지를 하는 함수'규칙 등 당연하다고 생각했던 내용들에 대해 한 걸음 더 나아가는 시간이었다. 그러나 실무에서는 이러한 규칙들을 모두 지키는 것이 좋을 때도 있고, 오히려 비효율적일 때도 있는 것 같다. 그러나 몇몇 규칙들은 꼭 필요한 내용들이어서 유익한 장이었던 것 같다.

궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.

  • 없음.