독서

책01. 파이브라인즈 오브 코드 03. 긴코드 조각내기

제비랑 2024. 2. 1. 00:30

파이브 라인스 오브 코드 - 크리스찬 클라우젠

3장. 긴코드 조각내기

3장이다. 말그대로 긴코드를 조각내는 다양한 방법들을 소개한다. 원래 짧을수록 쉽게쉽게 읽힌다. 나는 소설읽는 것을 좋아하는데, 교과서에 실린 문학작품들의 표현은 고급스럽고 곱씹는 묘미가 있는반면, 좀 길어서 한번에 이해하기 어렵다. 반면 웹 소설의 경우 짧은 문체로 인해 바로바로 이해가 가능하고 쉽게쉽게 읽힌다.
여기 아주 긴코드가 있다. 아주 길고 복잡한 로직으로 이루어져 코드를 보며 음미한다.. 해당 코드의 유지보수는 천년만년이걸리겟따.
여기 아주 짧은 코드가 있다. 아주 짧고 단순한 로직으로 이루어져 코드를 보면 바로 이해가 된다. 해당 코드의 유지보수는 너무 손쉽다.


3장 느낀점

  • 실제로 현재 싸피(개발자 부트캠프)에서 프로젝트중인데, 내가 짠 코드를 리팩토링하고 싶은 욕구가 느껴지게하는 3장이다.. 내가 작성한 30줄짜리 메소드가 아른거린다…
  • 주석이 나쁜 코드에 탈취제처럼 작용하는 경우가 있다는말이 너무 인상적이면서도 많이 뜨끔했다. 주석다는걸 즐기는 나로선, 코드를 작성할때 주석 없이도 이해할 수 있는 가독성 좋은 코드를 작성했는지 반성하게 됐다.
  • 4개의 5줄로 된 메서드가 20줄짜리 하나의 메소드보다 이해하기쉽다는게 사실 공감하면서도 공감하진 않는다. 자세한 작동원리를 파악하기에는 흐름대로 코드가 모여있는 20줄짜리 코드가 더 직관적일거 같기 때문이다. 물론 적당한 추상화를 통한 고레벨의 로직 흐름을 파악하기에는 적절한 방식이라는 생각이 든다.

3장 대대충 요약

3-1. 첫번째규칙 : why 다섯줄?

  • 이해가 쉽기 때문이다.(100%공감까진 안되네)

3-2. 함수 분해를 위한 리팩터링 패턴

  • 메서드 추출
    • 실제로 코딩 테스트 풀때도 로직을 하나하나 쪼개기 위해 많이 사용하는 방법이긴하다. 다만 매개변수로 객체를 넘기는게 아니라 전역변수로 뺄뿐..

3-3. 추상화 수준을 맞추기 위한 함수 분해

  • 객체에 있는 메서드 호출하거나 객체를 인자로 전달할수는 있지만, 둘이 섞진 말자.책임이 고르지 않아진다.

3-4. 좋은 함수 이름의 속성

3-5. 너무많은 일을 하는 함수 분리


3장 정리

  • 다섯 줄 제한 규칙은 메서드는 다섯 줄 이하여야 한다는 말입니다. 이것은 두가지 이상의 작업을 수행하는 메서드를 식별하는데 도움이 된다. 리팩터링 패턴인 메서드 추출을 사용해서 긴 메서드를 분해하고 메서드 이름으로 주석을 대신한다.
  • 호출 또는 전달. 한가지만 할 것.
  • → a라는 객체에 접근해서 a.fucn1()을 실행하고, func2(a)하지말라는 뜻이렸다. 동감한다.
  • 메소드 이름은 투명/완전/이해가능해야함. 메소드추출을 사용하면 가독성이 향상되도록 매개변수의 이름을 바꿀 수 있다.
  • if문은 함수의 시작에만 배치

느낀점