Categories

  • puregramer

3장, 긴 코드 조각내기를 읽고 나서


기억의 편린 - feat. PTSD

3장에선 draw라는 아주 긴 함수를 어떻게 잘게 쪼개는지 예시 코드와 함께 상세하게 설명해준다.

독자가 이야기하는 5줄 규칙과 메서드 추출, 호출 or 전달 규칙, 좋은 이름 규칙, if문 시작 규칙 등을 보면 볼수록 오래전 회사에서 나랑 친했던 수석님의 코드가 생각이 났다.

당시 수석님은 epub 저작툴을 angularjs로 만들고 계셨는데 저는 수석님이 만든 저작툴을 기반으로 간단한 노트 편집툴을 만들어야되어서 수석님 소스를 분석해야 되는 상황이었다.

그때 처음 본 수석님의 코드는…

뭐랄까? 처음 보는 생소한 형태였다.

함수들을 아주 잘게, 마치 채소를 채썰기로 아주 잘게 썰어놓은 형태였다. 덕분에 수석님 코드를 파악하기 위해사 이 함수 저 함수를 우체부 마냥 찾아다니며 분석했던 추억이 있다.

지금은 추억이라고 말할수 있지만 당시에는 정말 고생스러웠다.

지금 이순간 3장, 긴 코드 조각내기를 일고 나서 문득 든 생각이다.

코드를 채썰기 해놓는게 맞는것인가?

함수의 추상화 수준이란?

  • 함수를 분리할때 하나의 역할만 하도록 분리해서 함수 내부에서 동일한 수준의 추상화를 유지하라고 나오는데 (이게 뭔말이지?)

함수를 만드는 이유는 큰 개념을 다음 추상화 수준에서 여러 단계로 나눠 수행하기 위해서가 아니던가. - CleanCode-

추상화란?

  • 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것
  • 목적을 명확히 하여 복잡한 것은 숨기로 핵심만 드러내는 것이 추상화의 목적
예시문)
추상화 수준이 높다 => 김밤 준비하겠습니다.
추상화 수준이 낮다 => 김밥을 말기 위해서 여러가지 재료들을 준비하고 밥에 밑간을 하겠습니다.

코드일 경우)
추상화 수준이 높다 => 함수로만 구성된 코드
추상화 수준이 낮다 => 구체적인 세부 구현 코드

함수의 기본 원칙인 ‘함수는 단 한가지의 동작만 해야한다’ === ‘하나의 함수는 하나의 추상화 수준을 가져야 한다’