클린코드 챌린지 Day 04, 05

seul·2024년 1월 30일

개발자북클럽

목록 보기
4/11

📅 TIL (Today I Learned): 2024.01.30
📋 오늘 읽은 범위: 3. 함수


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

함수를 읽기 쉽고 이해하기 쉽게 만드는 방법!

작게 만들어라!

작게, 더 작게 만들어라.
if/else문, while문 등에 들어가는 블록은 한 줄이어야 한다.
들여쓰기 수준은 1단이나 2단을 넘어서면 안 된다.

한 가지만 해라! (제일 중요)

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

'한 가지'라는 것은 지정된 함수 이름 아래에서 추상화 수준이 하나인 것을 말한다.
(+ 한 함수 내에 추상화 수준을 섞으면 코드를 읽는 사람이 헷갈린다.)

위에서 아래로 프로그램을 읽으면 함수 추상화 수준이 한 번에 한 단계 씩 낮아진다. (내려가기 규칙)

Switch 문

본질적으로 switch 문은 n가지를 처리한다.
(그래서 추상 팩토리 안에서 케이스에 따라 파생 클래스 인스턴스 생성하는 데에 사용되거나... 그렇다고 하네요.)

함수 인수

단항 최고 > 이항
삼항은 피하고 4개 이상의 다항은 '특별한' 이유가 필요하다.

부수 효과를 일으키지 마라!

함수명은 1개의 일을 하는 척 해놓고 내부에서 다른 작업을 진행하는 경우를 말한다.
그렇게 하면 해당 함수는 내부의 작업 때문에 특수한 상황에서만 호출이 가능하다.

명령과 조회를 분리하라!

함수는 뭔가를 수행하거나 뭔가에 답하거나 둘 중 하나만 해야 한다.
둘 다 하면 무슨 뜻인지... 어색하다.

오류 코드보다 예외를 사용하라!

무언가 작업을 하고 오류를 반환하면 바로 오류 처리를 해야 한다.
오류 코드 대신 예외를 사용하면 try-catch 문으로 분리가 된다.

근데!
try-catch 블록이 추하다고 한다 (?)
그래서 특정 함수를 따로 빼내고 Exception을 throw 한 다음에 예외 처리를 하는 함수를 따로 만드는 것을 추천한다.

(+ 오류 코드를 반환하면 의존성이 굉장히 높아져서... 비추)

구조적 프로그래밍

모든 함수와 함수 내 모든 블록에 입구와 출구가 하나만 존재해야 한다.
루프 안에서 break나 continue를 사용해서는 안 된다.
-> 물론, 함수를 작게 만든다면 간혹 return, break, continue를 여러 차례 사용해도 괜찮다.

함수를 어떻게 짜죠?

그니까 이런 함수를 어떻게 만드냐는 이야기인데,
처음엔 서투르고 어수선하고 원하는대로 만든 다음에
코드를 다듬고, 함수를 만들고, 이름을 바꾸고, 중복을 제거하고, 메서드를 줄이고 순서를 바꾸고, 전체 클래스를 쪼개기도 한다면 ... 된다.

처음부터 탁 짜내지 않는다.


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

클린코드를 하면 가장 먼저 떠오르는 부분이 함수다. 개발자가 되어 가장 많이 짜는 부분이 함수이기 때문에 코드를 작성하면서 제일 더럽다고 느끼는 부분이 함수이고, 실제로 더러운 부분도 함수인 경우가 많다.

책에는 내가 알던 내용도 있었고 몰랐던 내용도 있었다.
다만 알았다면 그게 진짜 맞는지, 내가 너무 예민하게 하고 있던 건 아닌지 고민하고 있었던 부분이었다. 이번 기회를 통해 자신감을 얻었다.


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

마지막 결론의 3-7 코드가 잘 와닿지 않았다. 내 실력 탓이겠지...? ㅠ
내 머리로 저렇게 쪼갤 수 있을지 마냥 걱정이 앞섰다.

profile
자존감은 일상의 성실함으로부터 온다

0개의 댓글