누가봐도 인생 1회차의 기록장

개발공부/JavaScript 책

[클린코드] TIL (3장. 함수)

김놀먹 2022. 4. 27. 19:25

오늘 TIL 3줄 요약

  • '한 가지'만 하는 함수를 만들어라
  • 중복을 줄여라
  • 잘 읽히는 이야기처럼 코드를 풀어가라

책에서 기억하고 싶은 내용

  • 작게 만들어라 - 가로 100자, 100줄 이상 금지. 20줄도 김
  • 블록과 들여쓰기 - if/else문, while문 등에 들어가는 블록은 한 줄이어야 한다는 의미
    = 중첩구조가 생길만큼 함수가 커져서는 안됨
  • 한 가지만 해라 - 한 가지 기능만 하되, 그 기능이 잘 동작해야 함
  • 함수가 '한 가지' 기능만 수행하는지 확인하는 방법?
    • 지정된 함수 이름 아래에서 추상화 수준이 하나인 단계만 수행한다면 그 함수는 한 가지 작업만 한다.
    • 단순히 다른 표현이 아니라 의미 있는 이름으로 다른 함수를 추출할 수 있다면 그 함수는 여러 작업을 하는 셈.
  • 함수 당 추상화 수준은 하나로! - 한 함수 내에 추상화 수준을 섞으면 코드를 읽는 사람이 헷갈린다. 특정 표현이 근본 개념인지 아니면 세부사항인지 구분하기 어려운 탓
  • 위에서 아래로 코드 읽기 : 내려가기 규칙 - 코드는 위에서 아래로 이야기처럼 읽혀야 좋다. 한 함수 다음에는 한 단계 낮은 함수가 온다. 즉, 위에서 아래로 프로그램을 읽으면 함수 추상화 수준이 한 번에 한 단계씩 낮아지는 것
  • 서술적인 이름을 사용하라 - "코드를 읽으면서 짐작했던 기능을 각 루틴이 그대로 수행한다면 깨끗한 코드라 불러도 되겠다 - 워드"
    • 이름이 길어도 괜찮다
    • 길고 서술적인 이름이 짧고 어려운 이름보다 좋다
  • 함수 인수 - 함수에서 이상적인 인수 개수는 0개 (무항).
  • 부수 효과를 일으키지 마라
  • 명령과 조회를 분리하라 - 함수는 뭔가를 수행하거나 뭔가에 답하거나 둘 중 하나만 해야함.
  • 오류 코드보다 예외를 사용하라
  • 반복하지 마라
  • 구조적 프로그래밍 - " 모든 함수와 함수 내 모든 블록에 입구와 출구가 하나만 존재해야 한다 - 에츠허르 데이크스트라"
  • 그렇다면 함수는 어떻게 짜야할까?
  1. 글을 쓸 때 먼저 초안을 쓰고 계속해서 다듬듯이 함수를 짤 때도 마찬가지로 처음 짠 코드를 계속 수정하여 완성도 있게 만들자.
  2. 모든 코드를 빠짐없이 테스트하는 단위 테스트 케이스를 만들자 (모든 수정사항에서 코드는 항상 단위 테스트를 통과해야함)
  3. 코드 다듬기, 함수 만들기, 이름 바꾸기, 중복 제거, 메서드 줄이기, 순서 바꾸기, 전체 클래스 쪼개기로 계속해서 보완
  • DSL(Domain Specific Language) : 특정 응용 분야 시스템을 기술할 목적으로 프로그래머가 설계한 도메인 특화 언어
  • 프로그래머 대가(master)는 시스템을 구현할 프로그램이 아니라 풀어갈 이야기로 여김

그 후 코드 다듬기, 함수 만들기, 이름 바꾸기, 중복 제거, 메서드 줄이기, 순서 바꾸기, 전체 클래스 쪼개기 등

 

오늘 읽은 소감은? 

읽으면 읽을수록 좋은 코드를 짜는 게 참 쉽지 않다는 생각이 든다. 고려해야 할 것도 많고..!

짜놓은 코드를 좀 더 작은 코드로 나눌 수 없는지 고민해봐야겠다.

길고 서술적인 이름이 좋다고 했는데 어느 정도가 적당한 정도일까?ㅎㅎ

 

궁금한 내용, 잘 이해되지 않는 내용

  • 추상화
  • switch문에 관한 부분 (다형성 등)