Community

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

← Go back
[TIL] Chapter 3. 함수
#clean_code
2년 전
469


TIL (Today I Learned)

2022.02.23

오늘 읽은 범위

3장. 함수

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

  • 함수는 첫째도 작게, 둘째도 작게.
    if 문 등에 들어가는 블록은 한 줄로 하여 중첩 구조가 생길만큼 함수가 커지지 않도록 만든다.

  • 함수는 한 가지를 해야 한다. 그 한 가지를 잘 해야 한다. 그 한 가지만을 해야 한다.
    함수 안에서 의미 있는 이름으로 다른 함수를 추출할 수 없다면 그 함수는 한 가지만 하는 함수이다.

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

  • 함수에서 이상적인 인수 개수는 0개(무항)다. 인수는 없거나 1, 2개까지는 괜찮지만 3개는 가능하면 피하고 4개가 필요한 함수는 만들지 말자.

  • 어떤 코드든 절대로 무시하면 안되니까. 무시한 코드에 오류가 숨어드니까.

  • 함수의 의도인수의 순서의도를 제대로 표현하려면 좋은 함수 이름이 필수다.

  • 부수 효과를 일으키지 마라!
    함수명에서 짐작할 수 있는 한 가지 기능만 넣고 함수명에서 짐작할 수 없는 부수적인 것들은 따로 뺴는 것이 좋다.

  • Try/Catch 블록은 코드 구조에 혼란을 일으키고 정상 동작과 오류 동작을 뒤섞기 때문에 별도 함수로 뽑아내는 편이 좋다.

  • 오류 처리도 한 가지 작업이다. 따라서 오류를 처리하는 함수는 오류만 처리해야 마땅하다.

  • 대가 프로그래머는 시스템을 구현할 프로그램이 아니라 풀어갈 이야기로 여긴다. 함수를 잘 만드는 스킬은 중요하지만, 진짜 목표는 시스템이라는 이야기를 풀어가는 데 있다는 사실을 명심해야 한다.


    이야기를 풀어가기 쉽게 만들기 위해서는 분명하고 정확한 언어로 함수를 만들어야 한다.

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

  • 과거에 코딩을 처음 공부하기 시작했을 때부터 니코썜 강의, 그리고 현재 회사의 시니어 개발자에게 코드 리뷰를 받아 수정과 리팩토링을 반복하며 알게모르게 습득했던 깔끔한 코드를 작성하는 방법들이 이번 장에 소개되어 많이 공감되었던 것 같다. 특히 니코쌤 강의에서 자주 등장하는 'Divide and conquer'가 책을 읽는 동안 여러 번 떠올랐다.

  • 프로그래밍 언어라는 수단을 사용해 좀 더 풍부하고 좀 더 표현력이 강한 언어를 만들어 이야기를 풀어간다. (62페이지)
    -> 프로그래밍 언어는 이야기를 풀어가는 수단이라는 것을 다시 한 번 상기시켜준 부분. 인상깊었다.

  • 변수 파트를 읽었을 때도 그랬지만, 역시 PR 열기 전에 최대한 많이 검토하고 리팩토링 하자. (Rough draft가 아닌 최대한 깔끔한 문장으로 다듬어서 이야기를 풀어가자.)

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

  • SRP (Single Responsibility Principle):
    모든 모듈, 클래스, 혹은 함수는 해당 프로그램의 기능의 한 부분에 책임을 가져야한다는 프로그래밍 원칙. (출처: wikipedia)

  • OCP (Open-Closed Principle):
    객체 지향 프로그래밍에서, 클래스, 모듈, 함수 등의 소프트웨어 entity는 확장성이 있어야 하고 (open for extension) 변경에는 보수적이어야 한다는 (closed for modification) 원칙. 즉, 위와 같은 entity는 소스 코드를 조작하는 일 없이 확장 가능해야 한다는 것. (출처: wikipedia)