Clean code chapter1

Preview:

Citation preview

Clean Code

Chapter 1 : 클린코드

1.1 코드가 존재하리라

코드는 중요하다

왜냐하면 기계가 실행할 정도로 상세하게 요구사항을명시하는 작업이기 때문이다.

1.2 나쁜 코드

나쁜 코드를 짜는 이유

1. 급해서

2. 서두르느라

3. 상사한테 욕먹을까봐

4. 지겨워서 빨리 끝내려고

5. 다른 업무가 너무 밀려 후딱 해치우고 밀린 업무로 넘어가려고

등등등….

돌아가는 쓰레기 == 안 돌아가는 프로그램

쓰레기 코드를 나중에 손보겠다?

르블랑의 법칙 “나중은 결코 오지 않는다.”

1.3 나쁜 코드로 치르는 대가

재설계의 비용 >>> 넘사벽 >>> 클린코드를 만드는 비용

좋은 코드가 나쁜 코드로 전락하는 이유 ?

1. 원래 설계를 뒤집는 방향으로 요구사항이 변함

2. 일정이 촉박해서 제대로 할 시간이 없었다고 한탄

3. 멍청한 관리자와 조급한 고객과 쓸모없는 마케팅부서 때문에…

전적으로 프로그래머 잘못!!!!

관리자들의 책임 : 일정과 요구사항을 강력하게 밀어붙이는 것

프로그래머의 책임 : 좋은 코드를 사수하는 것

클린코드를 구현하는 행위는 그림을 그리는 행위와 비슷하다.

좋은그림인지 나쁜그림인지 구분한다고 좋은 그림을 그릴 수 없다.

좋은 코드인지 나쁜코드인지 구분한다고 클린코드를 작성할 수 없다.

좋은 코드를 작성하기 위해서는 코드 감각이 필요하다.

코드 감각

어떤 사람은 코드감각을 타고난다.

어떤 사람은 투쟁해서 얻어야 한다.

클린 코드란?

비야네 스트롭스트룹(C++ 창시자)

나는 우아하고 효율적인 코드를 좋아한다. 논리가 간단해야 버그가 숨어들지 못한다. 의존성을 최대한 줄여야 유지보수가 쉬워진다. 오류는 명백한 전략에 의거해 철저히 처리한다. 성능을 최적으로 유지해야 사람들이 원칙 없는 최적화로 코드를 망

치려는 유혹에 빠지지 않는다. 깨끗한 코드는 한 가지를 제대로 한다.

그레디부치(객체지향대가)

깨끗한 코드는 단순하고 직접적이다. 깨끗한 코드는 잘 쓴 문장처럼 읽힌다. 깨끗한 코드는 결코 설계자의 의도를 숨기지 않는다. 오히려 명쾌한 추상화와 단순

한 제어문으로 가득하다.

데이브토마스(실용주의프로그래머)

깨끗한코드는작성자가아닌사람도읽기쉽고고치기쉽다. 단위테스트케이스와수용테스트케이스가존재한다. 이런이름은의미가있다. 특정목적을달성하는방법은 (여러가지가아니라) 하나만제공한다. 의존성은최소이며각의존성을명확히정의한다. API는명확하며최소로줄였다. 때로는필요한정보전부를코드만으로명

확하게드러내기어려우므로언어에따라문학적표현도필요하다.

마이클페더즈(“Working Effectively with Legacy

Code” 저자)

깨끗한코드의특징은많지만그중에서도모두를아우르는특징이하나있다. 깨끗한코드는언제나누군가주의깊게짰다는느낌을준다. 고치려고살펴봐도딱히손댈곳이없다. 작성자가이미모든사항을고려했으므로. 고칠궁리를하다보면언제나제자리로돌아온다. 그리고는누군가남겨준코드, 누군가주의깊게짜놓은작에

감사를느낀다.

론제프리(“Extreme Programming Installed” 저자)

최근들어나는 [켄트] 벡이제안한간단한코드규칙으로구현을시작한다. (그리고같은규칙으로구현을거의끝낸다.) 중요한순으로나

열하자면간단한코드는1)모든테스트를통과한다.

2)중복이없다.

3)시스템내모든설계아이디어를표현한다.

4)클래스, 메소드, 함수등을최대한줄인다.

물론나는주로중복에집중한다. 같은작업을여러차례반복한다면코드가아이디어를제대로표현하지못한다는증거다. 나는문제의

아이디어를찾아내좀더명확하게표현하려애쓴다.

중복줄이기, 표현력높이기, 초반부터간단한추상화고려하기. 내게는이세가지가깨끗한코드를만드는비결이다.

워드커닝엄(위키창시자, 피트창시자,

익스트림프로그래밍창시자)

코드를읽으면서짐작했던기능을각루틴이그대로수행한다면깨끗한코드라불러도되겠다. 코드가그문제를풀기위한언어처럼보인

다면아름다운코드라불러도되겠다.

1.4 우리들(필자) 생각

책을 읽으시면 됩니다….

1.5 우리는 저자다

읽기: 쓰기 = 10: 1

비율이이렇게높으므로읽기쉬운코드가매우중요하다. 비록읽기쉬운코드를짜기가쉽지는않더라도말이다. 하지만기존코드를읽어야새코드를짜므로읽기쉽게만들

면사실은짜기도쉬워진다.

이논리에서빠져나갈방법은없다. 주변코드를읽지않으면새코드를짜지못한다. 주변코드를읽기가쉬우면새코드를짜기도쉽다. 주변코드를읽기가어려우면새코드를짜기도어렵다. 그러므로급하다면, 서둘러끝내려면,

쉽게짜려면, 읽기쉽게만들면된다.

1.6 보이 스카우트 법칙

시간이 지나도 언제나 코드를 깨끗하게 유지해야 한다.

미국 보이 스카우트가 따르는 규칙

“캠프장은 처음 왔을 때보다 더 깨끗하게 해놓고 떠나라.”

1.7 전편과 원책

생략

1.8 결론

이 책엔 나쁜 코드를 좋은 코드로 바꾸는 방법을 소개한다.

나머진 여러분에게 달렸다.

1.8 참고 문헌

생략

End