Community

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

← Go back

클린코드 Day4: 3장 함수

#clean_code
1년 전
178

오늘 TIL 3줄 요약

  • 함수는 한가지 일만 수행한다.

  • 코드를 읽으면서 짐작했던 기능을 각 루틴이 그대로 수행한다면 clean code

  • 부수 효과를 일이키지 마라 -> 함수내 옵션기능 자제

TIL (Today I Learned) 날짜

2022. 01. 30

오늘 읽은 범위

3장. 함수

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

작게 만들어라.

정답은 없다?? 오롯이 라인 수에만 집착할 필요는 없을 듯 하다.

블록과 들여쓰기

2단을 넘지 않아야 함수가 읽고 이해하기 쉽다….

한가지만 해라

얼마나 의미있는 함수이름을 뽑아내느냐에 따라 [한 가지 일]의 정의가 달라질 것이다.

참고로 한가지만 하는 함수는 함수 내 코드를 섹션으로 나누기 어렵다.

→ 너무 짧은 것도 가독성이 복잡해 지지 않을까? ㅠㅠ

함수당 추상화 수준은 하나로

추상화의 기준? 을 이해하기 어렵군 → 추가 조사 필요

코드 로직은 내려가기 규칙으로 읽혀질 수 있도록

그러려면, 함수는 최대한 한가지 일만 하고 그 안에서는 순차적으로 다른 함수를 호출하도록 구현되게 마련이다. 추상화를 정확히 설명하긴 어렵지만 이런 방식이면 추상화의 수준이 어느정도 일관되긴 할 것 같다.

하나의 함수가 여러 개의 섹션을 나눠진다면 한 함수에서 여러 작업을 한다는 증거다. → 너무 쪼개질거 같은데..ㅠㅠ

Switch문

이해 안감…interface로 추상화하고 interface 구현함수를 만들었는데 어차피 switch문을 사용한건 동일하던데… 뭐가 더 나아졌다는 건지..유연성은 더 높아졌을수는 있어도 switch 문을 작게 만든건 아닌데..

서술적인 이름을 사용해라.

코드를 읽으면서 짐작했던 기능을 각 루틴이 그대로 수행한다면 깨끗한 코드이다. → 백퍼 공감

중요한 건 명명 규칙의 일관성!

함수 인수

이상적인 함수 인수의 개수는 0이며 3개 이상은 지양해라.

함수 인수가 많아지면 테스트 케이스도 그에 비례에서 증가한다는 점 → 인수 조합으로 함수 검증 필요

플래그 인수는 최악이다. → 함수 안에 true/false 에 따라 최소 두 가지를 처리한다는반증 → 충격

인수객체가 많아 질 때 클래스나 객체를 사용하면 인수의 개념을 더 잘 표현하게 된다.

함수와 인자를 이용해서 더 나은 개념을 표현한 사례

  • write(name) → writeField(name): name 필드를 쓴다.

  • assertEquals → assertExpectedActual(expected, actual): 예상 값이 실제 값과 같은지… → 인수의 순서를 기억할 필요가 없는 상황

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

한 함수에 한가지 일만 해야 하는데 부수적으로 작은 옵션 기능을 추가하지 말라는 의미, 자칫 해당 옵션기능을 사용하지 않는 경우 오류를 발생시킬 수 있다.

명령과 조회를 분리하라.

username 속성을 찾고 unclebob으로 설정해라.

# before
if (set(”username”, “unclebob”))...
#after
if ( attributeExits(”username”)) {

	setAttrubute(”username”, “unclebob”)

}

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

각각의 오류를 if 처리하지 말고 예외로 단순히 처리해라. → 여러 단계로 중첩코드 양산

try {

}
catch (Exception e) {
}

→ 에러코드 별로 다른 함수를 호출하는 경우는 중첩코드가 필수로 필요한거 아닌가? 어차피 오류에 따른 함수를 호출하려면 if 처리가 필요할 텐데?

오류도 한가지 작업에 속한다. → 충격

오류처리하는 함수를 분리해라.

반복하지 마라

구조적 프로그래밍

함수는 return 문이 하나여야 한다. → break, continue 사용 불가 → 공감 불가

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

소프트웨어를 짜는 행위는 여느 글짓기와 비슷하다는 말에 매우 공감한다.

초안 → 다듬기 → 다듬기..의 반복하며 문장과 문단을 정리한다.

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

  • 함수는 return 문이 하나여야 한다. → break, continue 사용 불가 → 공감 불가

  • 함수 당 추상화의 기준은 하나로?

  • 오류코드보다 예외를 사용해라. → 오류코드별로 함수를 호출해야 하는 경우가 빈번한데 이럴때는 어떻게 하라는건지…

  • appaaaa님의 TIL: https://nomadcoders.co/community/thread/9204


    👉 나의 최애 북틸

    1. lynn : 소감/생각 부문의 내용이 공감이 많이 됨

    2. wowyowowyo : 기억하고 싶은 내용이 잘 요약/정리 되어 있음

    3. ses2000hj : 경험담이 이론과 현실 사이의 고민이 포인트가 많이 엿보인다.

    소감: 클린코드는 이론보다 이론을 바탕으로 다양한 경험을 통해 많은 고민과 시행착오 끝에 완성된다고 생각한다. 다른 사람들의 북틸은 나와 같은 공감대를 형성할 뿐만 아니라 내가 고민하지 못한 포인트를 도출하게 되서 유익하다.