행궁동 데이터 엔지니어

반응형
 
클린 코드의 기술
충족한다는 보장도 없습니다. 저자의 경험도 그렇습니다. 필요할 것 같은 기능들을 추가해서 제품을 만들었지만 자신의 생각과는 다르게 기능들을 활용하지 않는 모습을 보였습니다. 그러므로 강력하게 단순하게 하고 한 개의 일을 하는데 집중하자고 전하고 있습니다. 【 대상 독자층 】 - 코딩을 해봤지만 클린 코딩 방법에 대해 잘모르는 프로그래머 - 빠른 코딩과 적은 고통으로 더 많은 가치를 만들고 싶은 프로그래머 - 처음부터 클린 코드를 배우고 적용해보고 싶은 분
저자
Christian Mayer
출판
영진닷컴
출판일
2023.01.20

 

190페이지의 얇은 책이지만 복잡성과 생산성 그리고 코드 작성의 목적에 대해 생각해보게 해준 책이었습니다.

 

 


주요 내용들

1장: 복잡성은 어떻게 생산성을 해치는가


2장: 80:20원칙
- 기존의 중요한 기능을 개선하는데 시간을 들여라
3장: 최소 기능 제품 만들기


4장: 클린하고 단순한 코드 작성하기
- 큰 그림을 생각하라
- 거인들의 어깨 위에 서라
- 기계가 아닌 사람의 코드
- 필요하지 않아요
- 보이 스카웃 법칙과 리팩터링

 

5장: 성급한 최적화는 모든 악의 근원
- 성급한 최적화의 유형

  • 코드 함수들을 최적화하기
  • 기능들을 최적화하기
  • 계획을 최적화하기
  • 확장성을 최적화하기
  • 테스트 설계를 최적화하기
  • 객체지향 세계로 최적화하기

- 성능 튜닝을 위한 6가지 팁

  • 측정을 먼저, 개선은 다음
  • 파레토가 왕
  • 알고리즘 최적화가 최고
  • 캐시 만세
  • 적은 게 더 많다: 기능을 제거하거나 단순화 할 수도 있다.
  • 멈춰야 할 때를 알기

6장: 몰입
- 코딩하는 시간을 큰 단위로 잡으세요.

 

7장: 한 개의 일을 잘하기와 다른 유닉스 원칙들
- 각 함수는 한개의 일을 잘한다.
- 단순함이 복잡함 보다 좋다.
- 작은 것이 아름답다.
- 프로토타입을 가능한 빠르게 만든다.
- 효율성보다는 이식성을 선택한다.
- 클린 코드가 영리한 코드보다 좋다.

 

8장: 디자인은 적은 것이 더 많다: 생략

 

9장: 집중: 생략

 

 

책을 통해 개인적으로는 상황에 따라 필요한 기능만 빠르게 개발하고
최적화는 의도적으로 미뤄야할 때도 있다는 것을 생각해보게 되었습니다.

 

- 만약 필요한 기능한 빠르게 개발하게 되었고 빠른 시일 내에 문제가 발생할 것이 분명하다면 주석은 남겨두는게 좋은 것 같습니다.

(책의 내용을 빌리자면 다른 팀원들이 우리 코드베이스는 대충만든 거니까 나도 대충 개발해도 되겠지? 라고 오해하여 클린 코드가 아닌 대충? 코드를 만드는 것을 방지하기 위해서..)

 

- 또한 병목지점으로 장애나 사용자 경험 저하의 원인이 되거나 자주 호출되어 많은 비용을 발생시키는 API나 프로세스에 대한 최적하는 가치가 있는 것 같습니다.

 

측정을 통해 병목 지점을 알아내고 개선하는 것
하루에 100만번 호출 되는 API, 하루에 100번 호출되는 API 어떤 것을 개선할 것인가?
- 100번 호출되는 10초 걸리는 API를 0.1초로 만들 것인가
- 100만번 호출되고 1초 걸리는 API를 0.2초로 만들 것인가?

 

 

액션

 

신규 프로젝트, 독립된 신규 기능 개발

1. 소통을 통해 현 상황에서 필요한 것을 명확히 정의 후

2. 지금 필요한 코드를 읽기 쉽게 만들고

3. 명백히 빠른 시일내에 최적화가 필요할 코드는 주석을 남기기

 

유지 보수, 기존 기능에 추가 기능 개발

1. 버그 수정, 추가 기능 개발시 영향도를 파악하고

2. 이번 변경이 기존 코드에 많은 영향을 주거나 최적화가 필요할 것 같다면 해당 코드에 대해 잘 아는 동료들과 의논하여 개발

3. 다른 기능에 영향이 없고 병목지점도 아닌 것 같다면 깔끔하게 개발

- 의도적인 기술 부채를 피하고 이전보다 나은 코드가 되도록..

반응형

이 글을 공유합시다

facebook twitter kakaoTalk kakaostory naver band