이 책은 좋은 프로그램을 작성하는 요령을 설명한다.

책을 통해 얻을 수 있는 것
1. 좋은 코드와 나쁜 코드를 구분하는 능력
2. 좋은 코드를 작성하는 방법
3. 나쁜 코드를 좋은 코드로 바꾸는 실력

코드가 존재하리라

코드는 요구사항을 상세히 표현하는 수단으로 자동화되기에 불가능 하다.

나쁜 코드

예) 80년대 Killer App 개발한 회사
앱 출시 직후 선풍적인 인기를 끌었으나, 나쁜 코드 탓에 버그를 잡지 못하고, 나쁜 코드가 계속 쌓여
업그레이드가 더디고 프로그램이 자주 다운되어 망한 회사

나쁜 코드가 생산되는 이유:

  • 시간이 없었다.
  • 일단을 작동을 한다.
  • 업무가 밀려있다.

르블랑의 법칙 : 나중은 결코 오지 않는다. (애초에 좋은 코드를 생산하자.)

나쁜 코드로 치르는 대가

나쁜 코드가 쌓일수록 팀 생산성은 떨어진다.

원대한 재설계의 꿈
⇒ 코드가 엉망이니 새로 만들자
⇒ 새로운 시스템 설계
⇒ 새로운 팀원들이 재설계를 요구
⇒ 반복

시간을 들여 깨끗한 코드를 만드는 노력이 비용을 절감하는 방법일 뿐만 아니라 전문가로서 살아남는 길이다.

  • 태도의 문제 : 잘못은 전적으로 우리 프로그래머에게 있다.
    (기획변경탓, 마케팅탓, 고객탓, 촉박한 일정탓 금지...)
    좋은 코드를 사수하는 일은 바로 우리 프로그래머들의 책임이다.
    .
    어느 환자가 수술 전에 시간이 오래걸리니 손을 씻지 말라고 요구한다.
    의사는 이를 단호하게 거부해야한다. 왜? 질병과 감염의 위험은 환자보다 의사가 더 잘 아니까.
    프로그래머도 마찬가지다.
    나쁜 코드의 위험을 이해하지 못하는 관리자 말을 그대로 따르는 행동은 전문가답지 못하다.

  • 원초적 난제
    기한을 맞추는 유일한 방법은 코드를 최대한 깨끗하게 유지하는 습관이다.

  • 깨끗한 코드라는 예술?
    깨끗한 코드를 작성하려면 ‘청결'이라는 감각을 활용해 자잘한 기법들을 적용하는 절제와 규율이 필요하다.
    열쇠는 ‘코드 감각'이다. 코드 감각이 있으면 좋은 코드와 나쁜 코드를 구분한다.
    절제와 규율을 적용해 나쁜 코드를 좋은 코드로 바꾸는 전략도 파악한다.
    깨끗한 코드를 작성하는 프로그래머는 빈 캔버스를 우아한 작품으로 바꿔가는 화가와 같다.

  • 깨끗한 코드란?

비야네 스트롭스트룹 c++ 창시자

깨끗한 코드는 우아하고 효율적이다.

keywords

  • 우아한 : 깨끗한 코드는 보는 사람에게 즐거움을 선사해야 한다.
  • 효율 : 단순히 속도만을 뜻하기 보다. cpu자원을 생각하는 코드
  • 유혹 : 나쁜 코드를 고치면서 더 나쁜 코드를 만들게 된다.(깨진 창문)

깨끗한 코드란 한 가지를 잘 한다.
각 함수와 클래스와 모듈은 주변 상황에 현혹되거나 오염되지 않은 채 한길만 걷는다.

그래디 부치 Object Oriented Analysis and Design with Application 저자

깨끗한 코드는 가독성이 좋다.
좋은 소설과 마찬가지로 깨끗한 코드는 해결할 문제의 긴장을 명확히 드러내야 한다.
반드시 필요한 내용만 담아야한다.
코드를 읽는 사람에게 프로그래머가 단호하다는 인상을 줘야한다.

큰 데이브 토마스 OTI 창립자이자 이클립스 전략의 대부

깨끗한 코드는 다른 사람이 고치기 쉽다.

데이브는 깨끗한 코드와 테스트 케이스를 연관짓는다.
인간이 읽기 좋아야한다.

마이클 패더스 Working Effectively with Legacy code 저자

깨끗한 코드는 주의 깊게 작성한 코드다.
세세한 사항까지 꼼꼼하게 신경 쓴 코드다.

론 제프리스 Extreme Programming Installed 저자

중복을 피하라
한기능만 수행하라
제대로 표현하라
작게 추상화하라

읽으면서 짐작한 대로 돌아가는 코드가 깨끗한 코드다.
언어를 단순하게 보이도록 만드는 열쇠는 프로그래머다.

보이스카우트 규칙

캠프장은 처음 왔을 때보다 더 깨끗하게 해놓고 떠나라.
지속적인 개선이야말로 전문가 정신의 본질이다!

결론

이 책을 읽기만 해서는 깨끗한 코드를 만들 수 없다..
연습해 연습!

profile
Front-End Developer

0개의 댓글