[Clean Code] 1장 깨끗한 코드란??
1장 clean code란??
1장 깨끗한 코드
깨끗한 코드를 작성해야하는 목적과 이유를 소개하는 챕터
이 책을 완독하고 나면 좋은 코드와 나쁜 코드를 구분하는 능력
좋은 코드와 나쁜 코드를 구분하는 능력이 생김
나쁜 코드를 좋은 코드로 바꾸는 실력도 쌓인다.
목차
- 코드가 존재하리라
- 나쁜 코드
- 나쁜 코드로 치르는 대가
- 원대한 재설계의 꿈
- 태도
- 원초적 난제
- 깨끗한 코드라는 예술?
- 깨끗한 코드란?
- 우리들 생각
- 우리는 저자다
- 보이스카우트 규칙
- 프리퀄과 원칙
- 결론
- 참고 문헌
로버트 C 마틴 ( Robert C. Martin )
UML 표현 기법 , Agile 방법론을 창시한 저자.
1-1 코드가 존재 하리라
새로운 개발 언어가 나올수록 추상화 수준은 점점 높아지며
더불어 특정 응용 분야에 적합한 프로그래밍 언어의 개수도 많아질꺼라 예상한다.
안드로이드 개발에 적합한 Kotlin 블록채인, 인프라 개발에 적합한 GoLang등
바람직한 현상이다.
궁극적으로 코드는 고객의 요구사항을 표현하는 언어 ( Language )이자 도구 혹은 수단이다.
1-2 나쁜 코드
80년대 어떤 회사의 앱에서 이전 버전에 있던 버그가 다음 버전 릴리즈에 그대로 남아있어 점점
프로그램 시동 시간이 늘어나고 프로그램이 다운되는 횟수도 늘어났다.
이 회사는 얼마안가 폐업했다.
이후에 인터뷰에서 회사가 망한 원인은 출시에 바빠 나쁜 코드를 마구 작성한 결과였다.
나쁜 코드를 작성하는 이유
- 시간이 없어서
- 리팩토링하다가 질타를 받을까봐
- 지겨워서
- 밀린 다른 업무를 하려고
모두가 겪어본 상황이다.
모두 대충 짠 프로그램이 작동은 한다는 사실에 안도감을 느끼고 작동 안하는 프로그램보다
작동하는 쓰래기가 더 낫다는 스스로 위로를 할 수도 있다.
이 시점에서 우리는 르블랑의 법칙을 몰랐다.
( 르블랑의 법칙 : 나중은 결코 오지 않는다 )
그래서 처음 코드를 짤 때부터 깨끗하게 잘 짜야한다.
1-3 나쁜 코드로 치르는 대가
개발 속도를 크게 떨어뜨린다.
나쁜 코드가 쌓일수록 개발팀의 생산성은 떨어진다.
생산성이 떨어지면 프로젝트에 인력을 추가로 투입해 생산성을 증가 시키려 하지만 새로운 인력과 해당 개발팀은
생산성을 높여야 한다는 압력에 시달려 나쁜 코드를 더 양산해 생산성은 0에 수렴하게 된다.
1-3-1 원대한 재설계의 꿈
깨끗한 코드를 만드는 노력이 비용을 절감할 뿐아니라 전문가로서 살아남는다.
기존 시스템 + 새로운 시스템( 새로운 변경)은 기간이 10년 이상 걸려도 어렵다.
1-3-2 태도
좋은 코드를 사수하는 일은 프로그래머의 책임이다.
요구사항의 변경, 촉박한 일정, 고객의 불평의 원인은 프로그래머의 전문성이 요인이다.
나쁜 코드의 위험을 이해하는 전문가 프로그래머가 되어야한다.
1-3-3 원초적 난제
프로젝트 기한을 맞추는 방법
- 코드를 언제 짜도 최대한 깨끗하게 유지하는 습관을 길러라.
나쁜 코드의 결과
- 개발 속도가 늦어지고 프로젝트 기한을 맞추지 못한다.
1-3-4 깨끗한 코드라는 예술
깨끗한 코드란 감각적인 코드와 절제, 규율이다.
코드 감각이 있는 프로그래머는 나쁜 모듈을 보면 좋은 모듈로 개선할 방안을 떠올린다.
1-3-5 깨끗한 코드란?
C++ 만든사람
- 보기 즐거운 코드
- 메모리 낭비 방지
- 철저한 오류 처리
- 일관성 없는 코드 작성법
객체지향 디자인 만든사람
- 가독성 강조 = 잘 쓰여진 한 문장처럼 읽혀야 한다.
- 코드를 추측이 아닌 사실에 기반해야 한다. ( 필요한 내용만 담는다 )
이클립스 만든사람
- 깨끗한 코드는 다른사람이 고치기 쉽다
- 코드가 우아하고 깨끗해도 테스트 케이스가 없으면 안 깨끗하다
- 코드는 문학적이어야 한다 ( 사람이 읽기 좋아야함 )
- 깨끗한 코드는 시간을 들여 깔끔하고 단정하게 정리한 코드다.
eXtreme 프로그래밍 기법 만든사람
- 모든 테스트 케이스를 통과한다.
- 중복이 없다.
- 시스템의 모든 설계 아이디어를 표현하는 코드.
- 클래스와 메서드 함수등을 최대한 줄인다.
- 추상 메서드나 클래스를 만들어 구현체를 만든다.
wiki를 만든사람
- 다른 사람이 읽으면서 예상한대로 돌아가는 코드가 깨끗한 코드
- 언어( 코드 )를 단순하게 보일 수 있게 한다.
4 & 5. 우리들 생각 + 우리는 저자다
저자가 생각하는 깨끗한 코드란?
깨끗한 변수 이름, 깨끗한 함수, 깨끗한 클래스
새 코드를 짜면서 기존 코드를 읽는다.
읽는 시간 : 짜는 시간 = 10 : 1
읽기 쉬운 코드가 매우 중요하다
코드를 선언적으로 작성하게 되면 얕게 봐도 알수있다.
5. 보이스카우트 규칙
캠핑장에 처음 왔을 때보다 캠핑장을 더 깨끗하게 해놓고 떠나라.
이전 커밋보다 좀 더 깨끗한 코드를 커밋하자.
시간이 지날 수록 코드가 좋아지는 프로젝트를 하자.
결론
이 책을 읽는다 해서 뛰어난 개발자가 된다는 보장은 없다.
“코드 감각 “ 을 얻는 다는 보장도 없다.
이후에 나올 내용은 뛰어난 프로그래머가 사용하는 기술과 기교, 도구를 소개하는 것 뿐이다.
좋은 코드도 소개하고 나쁜 코드도 소개한다.
나쁜 코드를 좋은 코드로 바꾸는 방법도 자세히 소개한다.
경험적 교훈과 체계와 절차와 기법도 열거한다.
예제도 많다.
결과적으로 깨끗한 코드는 독자에게 달렸다.