Community

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

← Go back
TIL 3장. 함수
#clean_code
2년 전
478

오늘 TIL 3줄 요약

  • 함수는 한 가지 일을 해야 한다. 그 한가지를 잘 해야 하며 추상화 수준이 하나인 단계만 수행하자.

  • 서술적인 이름을 사용하라.

  • 명령과 조회를 분리하라! (CQS 규칙)

TIL (Today I Learned) 날짜

2022.04.26

오늘 읽은 범위

3장. 함수

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

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

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

  • 이 책에서 가장 중요한 부분이 2,3장에 모두 포함된다고 생각한다.
    변수 명을 잘 짓고, 함수만 잘 분리해도 구조 파악이 용이해지고 어떤 역할을 하려는 지가 보인다.
    이런 분리를 바탕으로해야 코드의 공통점들이 보이고, 이런 공통점들을 묶어서 새로운 추상화를 발견할 수 있다.

  • 그렇다면 좋은 함수란 무엇일까에 대한 얘기를 여기서 한다.
    함수 명은 어떻게 되어야하는지, 함수는 어떻게 작성이 되어야하는지. 각각의 역할을 잘 구별한다면 좋은 코드를 지을 수 있을 것이다.

  • 처음에 set() 함수 분리와 관련해서는 결국 어디선가는 if (condition) { doCode }를 실행하게 될텐데 이 것이 함수가 하나의 역할을 하도록 생각하는 것을 방해한다고 생각했다.
    그러나 이전에 나온 한 가지 일을 한다는 것은 함수가 같은 추상화 레벨을 가지고 있는 것을 말한다고 했는데, 결국 "setAttribute가 가능하면 setAttribute를 실행한다"는 함수는 하나의 추상화 레벨로 볼 수 있다.
    비슷하게 다른 의미있는 함수 추출도 불가능하니 하나의 함수로 볼 수 있다고 생각한다.

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

  • 이 부분은 약간 함수의 범위를 벗어난 생각인 것 같지만
    함수는 알겠는데 그렇다면 하나의 클래스는 어떻게 고려해야할까?
    비즈니스 로직이 처리되는 클래스는 얼마나 클 수 있고, 어떤 기준으로 나눠야하지?
    로직을 나누기 애매한 경우가 생길텐데 그런 경우는 어떻게 고려할 수 있을까?
    하나의 클래스가 가지는 의존성이 많다면 어떻게 자르는게 좋을까?
    계속해서 클래스의 뎁스가 깊어져야하나?

오늘 읽은 다른사람의 TIL