SlideShare a Scribd company logo
1 of 34
Download to read offline
Clean Code 
Chapter 1 : 클린코드
Clean code chapter1
1.1 코드가 존재하리라
코드는 중요하다 
왜냐하면 기계가 실행할 정도로 상세하게 요구사항을 
명시하는 작업이기 때문이다.
1.2 나쁜 코드
나쁜 코드를 짜는 이유 
1. 급해서 
2. 서두르느라 
3. 상사한테 욕먹을까봐 
4. 지겨워서 빨리 끝내려고 
5. 다른 업무가 너무 밀려 후딱 해치우고 밀린 업무로 넘어가려고 
등등등….
돌아가는 쓰레기 == 안 돌아가는 프로그램 
쓰레기 코드를 나중에 손보겠다? 
르블랑의 법칙 “나중은 결코 오지 않는다.”
1.3 나쁜 코드로 치르는 대가
Clean code chapter1
재설계의 비용 >>> 넘사벽 >>> 클린코드를 만드는 비용
좋은 코드가 나쁜 코드로 전락하는 이유 ? 
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

More Related Content

What's hot

왜 Swift를 해야할까요?
왜 Swift를 해야할까요?왜 Swift를 해야할까요?
왜 Swift를 해야할까요?선협 이
 
[W3C HTML5 2016] 일렉트론, 웹 기술로 담아내는 데스크탑 애플리케이션
[W3C HTML5 2016] 일렉트론, 웹 기술로 담아내는 데스크탑 애플리케이션[W3C HTML5 2016] 일렉트론, 웹 기술로 담아내는 데스크탑 애플리케이션
[W3C HTML5 2016] 일렉트론, 웹 기술로 담아내는 데스크탑 애플리케이션양재동 코드랩
 
개발자들 뭐 하는 건가요?
개발자들 뭐 하는 건가요?개발자들 뭐 하는 건가요?
개발자들 뭐 하는 건가요?Skyler Shin
 
[강연] 학생에서 현업 개발자로의 성공적인 변신을 위하여
[강연] 학생에서 현업 개발자로의 성공적인 변신을 위하여[강연] 학생에서 현업 개발자로의 성공적인 변신을 위하여
[강연] 학생에서 현업 개발자로의 성공적인 변신을 위하여Kwangsung Ha
 
오픈소스 읽기 프로젝트
오픈소스 읽기 프로젝트오픈소스 읽기 프로젝트
오픈소스 읽기 프로젝트JiwonH
 
NDC 2017 라이브 프로세스 분석을 통한 효율적인 게임 로직 개발 - 김성은
NDC 2017 라이브 프로세스 분석을 통한 효율적인 게임 로직 개발 - 김성은NDC 2017 라이브 프로세스 분석을 통한 효율적인 게임 로직 개발 - 김성은
NDC 2017 라이브 프로세스 분석을 통한 효율적인 게임 로직 개발 - 김성은Sung Eun Kim
 
Concurreny programming
Concurreny programmingConcurreny programming
Concurreny programmingJaejin Yun
 
임태현, 프로그래머 생존 가이드
임태현, 프로그래머 생존 가이드임태현, 프로그래머 생존 가이드
임태현, 프로그래머 생존 가이드태현 임
 
신입 SW 개발자 취업 준비
신입 SW 개발자 취업 준비신입 SW 개발자 취업 준비
신입 SW 개발자 취업 준비인서 박
 
ㅃㅃㅃㅃㅃ
ㅃㅃㅃㅃㅃㅃㅃㅃㅃㅃ
ㅃㅃㅃㅃㅃYoo Jaeeun
 
20211030 청소년이 바꾸는 세상 톡톡 진로콘서트 - 개발자라는직업
20211030 청소년이 바꾸는 세상 톡톡 진로콘서트 - 개발자라는직업20211030 청소년이 바꾸는 세상 톡톡 진로콘서트 - 개발자라는직업
20211030 청소년이 바꾸는 세상 톡톡 진로콘서트 - 개발자라는직업Junseo Youn
 
RTFM, 나는프로그래머다 Meetup 2016 - 코딩인터뷰 준비 티끌 가이드/ 구글, 염재현 소프트웨어 엔지니어
RTFM, 나는프로그래머다 Meetup 2016 - 코딩인터뷰 준비 티끌 가이드/ 구글, 염재현 소프트웨어 엔지니어RTFM, 나는프로그래머다 Meetup 2016 - 코딩인터뷰 준비 티끌 가이드/ 구글, 염재현 소프트웨어 엔지니어
RTFM, 나는프로그래머다 Meetup 2016 - 코딩인터뷰 준비 티끌 가이드/ 구글, 염재현 소프트웨어 엔지니어양 한빛
 
Doxygen 사용법
Doxygen 사용법Doxygen 사용법
Doxygen 사용법YoungSu Son
 
훌륭한 프로그래머 되는 법
훌륭한 프로그래머 되는 법훌륭한 프로그래머 되는 법
훌륭한 프로그래머 되는 법Kai [Kyung Seok] Song
 
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기Ahreum Kim
 
Django Girls 12월 Meetup 발표 자료
Django Girls 12월 Meetup 발표 자료Django Girls 12월 Meetup 발표 자료
Django Girls 12월 Meetup 발표 자료seungdols
 

What's hot (20)

왜 Swift를 해야할까요?
왜 Swift를 해야할까요?왜 Swift를 해야할까요?
왜 Swift를 해야할까요?
 
Chean code chapter 1
Chean code chapter 1Chean code chapter 1
Chean code chapter 1
 
[W3C HTML5 2016] 일렉트론, 웹 기술로 담아내는 데스크탑 애플리케이션
[W3C HTML5 2016] 일렉트론, 웹 기술로 담아내는 데스크탑 애플리케이션[W3C HTML5 2016] 일렉트론, 웹 기술로 담아내는 데스크탑 애플리케이션
[W3C HTML5 2016] 일렉트론, 웹 기술로 담아내는 데스크탑 애플리케이션
 
개발자들 뭐 하는 건가요?
개발자들 뭐 하는 건가요?개발자들 뭐 하는 건가요?
개발자들 뭐 하는 건가요?
 
[강연] 학생에서 현업 개발자로의 성공적인 변신을 위하여
[강연] 학생에서 현업 개발자로의 성공적인 변신을 위하여[강연] 학생에서 현업 개발자로의 성공적인 변신을 위하여
[강연] 학생에서 현업 개발자로의 성공적인 변신을 위하여
 
오픈소스 읽기 프로젝트
오픈소스 읽기 프로젝트오픈소스 읽기 프로젝트
오픈소스 읽기 프로젝트
 
Technicalinterview
TechnicalinterviewTechnicalinterview
Technicalinterview
 
NDC 2017 라이브 프로세스 분석을 통한 효율적인 게임 로직 개발 - 김성은
NDC 2017 라이브 프로세스 분석을 통한 효율적인 게임 로직 개발 - 김성은NDC 2017 라이브 프로세스 분석을 통한 효율적인 게임 로직 개발 - 김성은
NDC 2017 라이브 프로세스 분석을 통한 효율적인 게임 로직 개발 - 김성은
 
Concurreny programming
Concurreny programmingConcurreny programming
Concurreny programming
 
임태현, 프로그래머 생존 가이드
임태현, 프로그래머 생존 가이드임태현, 프로그래머 생존 가이드
임태현, 프로그래머 생존 가이드
 
신입 SW 개발자 취업 준비
신입 SW 개발자 취업 준비신입 SW 개발자 취업 준비
신입 SW 개발자 취업 준비
 
ㅃㅃㅃㅃㅃ
ㅃㅃㅃㅃㅃㅃㅃㅃㅃㅃ
ㅃㅃㅃㅃㅃ
 
Tdd bdd
Tdd bddTdd bdd
Tdd bdd
 
20211030 청소년이 바꾸는 세상 톡톡 진로콘서트 - 개발자라는직업
20211030 청소년이 바꾸는 세상 톡톡 진로콘서트 - 개발자라는직업20211030 청소년이 바꾸는 세상 톡톡 진로콘서트 - 개발자라는직업
20211030 청소년이 바꾸는 세상 톡톡 진로콘서트 - 개발자라는직업
 
RTFM, 나는프로그래머다 Meetup 2016 - 코딩인터뷰 준비 티끌 가이드/ 구글, 염재현 소프트웨어 엔지니어
RTFM, 나는프로그래머다 Meetup 2016 - 코딩인터뷰 준비 티끌 가이드/ 구글, 염재현 소프트웨어 엔지니어RTFM, 나는프로그래머다 Meetup 2016 - 코딩인터뷰 준비 티끌 가이드/ 구글, 염재현 소프트웨어 엔지니어
RTFM, 나는프로그래머다 Meetup 2016 - 코딩인터뷰 준비 티끌 가이드/ 구글, 염재현 소프트웨어 엔지니어
 
프로그래머
프로그래머프로그래머
프로그래머
 
Doxygen 사용법
Doxygen 사용법Doxygen 사용법
Doxygen 사용법
 
훌륭한 프로그래머 되는 법
훌륭한 프로그래머 되는 법훌륭한 프로그래머 되는 법
훌륭한 프로그래머 되는 법
 
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기
 
Django Girls 12월 Meetup 발표 자료
Django Girls 12월 Meetup 발표 자료Django Girls 12월 Meetup 발표 자료
Django Girls 12월 Meetup 발표 자료
 

Viewers also liked

Naming Standards, Clean Code
Naming Standards, Clean CodeNaming Standards, Clean Code
Naming Standards, Clean CodeCleanestCode
 
Clean code(03)
Clean code(03)Clean code(03)
Clean code(03)규열 김
 
Clean code(02)
Clean code(02)Clean code(02)
Clean code(02)규열 김
 
Clean code(04)
Clean code(04)Clean code(04)
Clean code(04)규열 김
 
Clean code(05)
Clean code(05)Clean code(05)
Clean code(05)규열 김
 
Clean code chapter11 - systems
Clean code   chapter11 - systemsClean code   chapter11 - systems
Clean code chapter11 - systemsitomcc
 
Tobi 스프링 2장 php version
Tobi 스프링 2장   php versionTobi 스프링 2장   php version
Tobi 스프링 2장 php versionukjinkwoun
 
만들면서 배우는 Cocos2d x 멀티 플랫폼 게임 프로그래밍 10-11장
만들면서 배우는 Cocos2d x 멀티 플랫폼 게임 프로그래밍 10-11장만들면서 배우는 Cocos2d x 멀티 플랫폼 게임 프로그래밍 10-11장
만들면서 배우는 Cocos2d x 멀티 플랫폼 게임 프로그래밍 10-11장ukjinkwoun
 

Viewers also liked (11)

Naming Standards, Clean Code
Naming Standards, Clean CodeNaming Standards, Clean Code
Naming Standards, Clean Code
 
Clean code(03)
Clean code(03)Clean code(03)
Clean code(03)
 
코드 Ch20
코드 Ch20코드 Ch20
코드 Ch20
 
Clean code(02)
Clean code(02)Clean code(02)
Clean code(02)
 
Clean code(04)
Clean code(04)Clean code(04)
Clean code(04)
 
Clean code(05)
Clean code(05)Clean code(05)
Clean code(05)
 
Clean code chapter11 - systems
Clean code   chapter11 - systemsClean code   chapter11 - systems
Clean code chapter11 - systems
 
Tobi 스프링 2장 php version
Tobi 스프링 2장   php versionTobi 스프링 2장   php version
Tobi 스프링 2장 php version
 
만들면서 배우는 Cocos2d x 멀티 플랫폼 게임 프로그래밍 10-11장
만들면서 배우는 Cocos2d x 멀티 플랫폼 게임 프로그래밍 10-11장만들면서 배우는 Cocos2d x 멀티 플랫폼 게임 프로그래밍 10-11장
만들면서 배우는 Cocos2d x 멀티 플랫폼 게임 프로그래밍 10-11장
 
Clean code Chapter.2
Clean code Chapter.2Clean code Chapter.2
Clean code Chapter.2
 
함수적 사고 2장
함수적 사고 2장함수적 사고 2장
함수적 사고 2장
 

Similar to Clean code chapter1

(책 소개) 레거시 코드 활용 전략
(책 소개) 레거시 코드 활용 전략(책 소개) 레거시 코드 활용 전략
(책 소개) 레거시 코드 활용 전략Jay Park
 
클린 코드 part1
클린 코드 part1클린 코드 part1
클린 코드 part1Minseok Jang
 
[2012 03 17]clean_code 14장 점진적개선
[2012 03 17]clean_code 14장 점진적개선[2012 03 17]clean_code 14장 점진적개선
[2012 03 17]clean_code 14장 점진적개선Jong Pil Won
 
The art of readable code ch4 ch8
The art of readable code ch4   ch8The art of readable code ch4   ch8
The art of readable code ch4 ch8Ki Sung Bae
 
[2012 01 28]cleancode 1장
[2012 01 28]cleancode 1장[2012 01 28]cleancode 1장
[2012 01 28]cleancode 1장Jong Pil Won
 
클린코드와 TDD
클린코드와 TDD클린코드와 TDD
클린코드와 TDDHerren
 
읽기 좋은 코드가 좋은코드다
읽기 좋은 코드가 좋은코드다읽기 좋은 코드가 좋은코드다
읽기 좋은 코드가 좋은코드다wonmin lee
 
(독서광) 프로그래머의 뇌
(독서광) 프로그래머의 뇌(독서광) 프로그래머의 뇌
(독서광) 프로그래머의 뇌Jay Park
 
초보개발자의 TDD 체험기
초보개발자의 TDD 체험기초보개발자의 TDD 체험기
초보개발자의 TDD 체험기Sehun Kim
 
SWDeveloprStory201601
SWDeveloprStory201601SWDeveloprStory201601
SWDeveloprStory201601Suho Kwon
 
NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할Hoyoung Choi
 
읽기 좋은 코드가 좋은 코드다.
읽기 좋은 코드가 좋은 코드다.읽기 좋은 코드가 좋은 코드다.
읽기 좋은 코드가 좋은 코드다.TonyCms
 
Windows reversing study_basic_1
Windows reversing study_basic_1Windows reversing study_basic_1
Windows reversing study_basic_1Jinkyoung Kim
 
C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법선협 이
 
스마일게이트 서버개발캠프 - 5vengers
스마일게이트 서버개발캠프 - 5vengers 스마일게이트 서버개발캠프 - 5vengers
스마일게이트 서버개발캠프 - 5vengers ServerDevCamp
 
2023_테오콘_패턴매칭을 통해 선언적으로 타입스크립트 다루기_허브
2023_테오콘_패턴매칭을 통해 선언적으로 타입스크립트 다루기_허브2023_테오콘_패턴매칭을 통해 선언적으로 타입스크립트 다루기_허브
2023_테오콘_패턴매칭을 통해 선언적으로 타입스크립트 다루기_허브민 허
 
게임프로그래머에게 배우는 C#1권(버전1)
게임프로그래머에게 배우는 C#1권(버전1)게임프로그래머에게 배우는 C#1권(버전1)
게임프로그래머에게 배우는 C#1권(버전1)Kiyoung Moon
 
임태현, 서버점검 제로에의 도전, NDC2011
임태현, 서버점검 제로에의 도전, NDC2011임태현, 서버점검 제로에의 도전, NDC2011
임태현, 서버점검 제로에의 도전, NDC2011devCAT Studio, NEXON
 

Similar to Clean code chapter1 (20)

(책 소개) 레거시 코드 활용 전략
(책 소개) 레거시 코드 활용 전략(책 소개) 레거시 코드 활용 전략
(책 소개) 레거시 코드 활용 전략
 
클린 코드 part1
클린 코드 part1클린 코드 part1
클린 코드 part1
 
[2012 03 17]clean_code 14장 점진적개선
[2012 03 17]clean_code 14장 점진적개선[2012 03 17]clean_code 14장 점진적개선
[2012 03 17]clean_code 14장 점진적개선
 
The art of readable code ch4 ch8
The art of readable code ch4   ch8The art of readable code ch4   ch8
The art of readable code ch4 ch8
 
[2012 01 28]cleancode 1장
[2012 01 28]cleancode 1장[2012 01 28]cleancode 1장
[2012 01 28]cleancode 1장
 
클린코드와 TDD
클린코드와 TDD클린코드와 TDD
클린코드와 TDD
 
읽기 좋은 코드가 좋은코드다
읽기 좋은 코드가 좋은코드다읽기 좋은 코드가 좋은코드다
읽기 좋은 코드가 좋은코드다
 
(독서광) 프로그래머의 뇌
(독서광) 프로그래머의 뇌(독서광) 프로그래머의 뇌
(독서광) 프로그래머의 뇌
 
초보개발자의 TDD 체험기
초보개발자의 TDD 체험기초보개발자의 TDD 체험기
초보개발자의 TDD 체험기
 
Clean code
Clean codeClean code
Clean code
 
SWDeveloprStory201601
SWDeveloprStory201601SWDeveloprStory201601
SWDeveloprStory201601
 
NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할
 
읽기 좋은 코드가 좋은 코드다.
읽기 좋은 코드가 좋은 코드다.읽기 좋은 코드가 좋은 코드다.
읽기 좋은 코드가 좋은 코드다.
 
리팩토링
리팩토링리팩토링
리팩토링
 
Windows reversing study_basic_1
Windows reversing study_basic_1Windows reversing study_basic_1
Windows reversing study_basic_1
 
C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법
 
스마일게이트 서버개발캠프 - 5vengers
스마일게이트 서버개발캠프 - 5vengers 스마일게이트 서버개발캠프 - 5vengers
스마일게이트 서버개발캠프 - 5vengers
 
2023_테오콘_패턴매칭을 통해 선언적으로 타입스크립트 다루기_허브
2023_테오콘_패턴매칭을 통해 선언적으로 타입스크립트 다루기_허브2023_테오콘_패턴매칭을 통해 선언적으로 타입스크립트 다루기_허브
2023_테오콘_패턴매칭을 통해 선언적으로 타입스크립트 다루기_허브
 
게임프로그래머에게 배우는 C#1권(버전1)
게임프로그래머에게 배우는 C#1권(버전1)게임프로그래머에게 배우는 C#1권(버전1)
게임프로그래머에게 배우는 C#1권(버전1)
 
임태현, 서버점검 제로에의 도전, NDC2011
임태현, 서버점검 제로에의 도전, NDC2011임태현, 서버점검 제로에의 도전, NDC2011
임태현, 서버점검 제로에의 도전, NDC2011
 

More from ukjinkwoun

Chapter 1 0 이야기
Chapter 1 0 이야기Chapter 1 0 이야기
Chapter 1 0 이야기ukjinkwoun
 
Head first chapter 1
Head first chapter 1Head first chapter 1
Head first chapter 1ukjinkwoun
 
대규모 서비스를 지탱하는 기술 Ch 4
대규모 서비스를 지탱하는 기술 Ch 4대규모 서비스를 지탱하는 기술 Ch 4
대규모 서비스를 지탱하는 기술 Ch 4ukjinkwoun
 
프로그래머로 사는법 챕터16
프로그래머로 사는법   챕터16프로그래머로 사는법   챕터16
프로그래머로 사는법 챕터16ukjinkwoun
 
프로그래머로 사는법 챕터9
프로그래머로 사는법   챕터9프로그래머로 사는법   챕터9
프로그래머로 사는법 챕터9ukjinkwoun
 
프로그래머로 사는법
프로그래머로 사는법프로그래머로 사는법
프로그래머로 사는법ukjinkwoun
 
대규모 구조
대규모 구조대규모 구조
대규모 구조ukjinkwoun
 
도메인 객체의 생명주기
도메인 객체의 생명주기도메인 객체의 생명주기
도메인 객체의 생명주기ukjinkwoun
 

More from ukjinkwoun (10)

Chapter 1 0 이야기
Chapter 1 0 이야기Chapter 1 0 이야기
Chapter 1 0 이야기
 
Head first chapter 1
Head first chapter 1Head first chapter 1
Head first chapter 1
 
대규모 서비스를 지탱하는 기술 Ch 4
대규모 서비스를 지탱하는 기술 Ch 4대규모 서비스를 지탱하는 기술 Ch 4
대규모 서비스를 지탱하는 기술 Ch 4
 
코드 Ch23
코드 Ch23코드 Ch23
코드 Ch23
 
코드 Ch4
코드 Ch4코드 Ch4
코드 Ch4
 
프로그래머로 사는법 챕터16
프로그래머로 사는법   챕터16프로그래머로 사는법   챕터16
프로그래머로 사는법 챕터16
 
프로그래머로 사는법 챕터9
프로그래머로 사는법   챕터9프로그래머로 사는법   챕터9
프로그래머로 사는법 챕터9
 
프로그래머로 사는법
프로그래머로 사는법프로그래머로 사는법
프로그래머로 사는법
 
대규모 구조
대규모 구조대규모 구조
대규모 구조
 
도메인 객체의 생명주기
도메인 객체의 생명주기도메인 객체의 생명주기
도메인 객체의 생명주기
 

Clean code chapter1

  • 1. Clean Code Chapter 1 : 클린코드
  • 4. 코드는 중요하다 왜냐하면 기계가 실행할 정도로 상세하게 요구사항을 명시하는 작업이기 때문이다.
  • 6. 나쁜 코드를 짜는 이유 1. 급해서 2. 서두르느라 3. 상사한테 욕먹을까봐 4. 지겨워서 빨리 끝내려고 5. 다른 업무가 너무 밀려 후딱 해치우고 밀린 업무로 넘어가려고 등등등….
  • 7. 돌아가는 쓰레기 == 안 돌아가는 프로그램 쓰레기 코드를 나중에 손보겠다? 르블랑의 법칙 “나중은 결코 오지 않는다.”
  • 8. 1.3 나쁜 코드로 치르는 대가
  • 10. 재설계의 비용 >>> 넘사벽 >>> 클린코드를 만드는 비용
  • 11. 좋은 코드가 나쁜 코드로 전락하는 이유 ? 1. 원래 설계를 뒤집는 방향으로 요구사항이 변함 2. 일정이 촉박해서 제대로 할 시간이 없었다고 한탄 3. 멍청한 관리자와 조급한 고객과 쓸모없는 마케팅부서 때문에…  전적으로 프로그래머 잘못!!!!
  • 12. 관리자들의 책임 : 일정과 요구사항을 강력하게 밀어붙이는 것 프로그래머의 책임 : 좋은 코드를 사수하는 것
  • 13. 클린코드를 구현하는 행위는 그림을 그리는 행위와 비슷하다. 좋은그림인지 나쁜그림인지 구분한다고 좋은 그림을 그릴 수 없다. 좋은 코드인지 나쁜코드인지 구분한다고 클린코드를 작성할 수 없다.  좋은 코드를 작성하기 위해서는 코드 감각이 필요하다.
  • 14. 코드 감각 어떤 사람은 코드감각을 타고난다. 어떤 사람은 투쟁해서 얻어야 한다.
  • 16. 비야네 스트롭스트룹(C++ 창시자) 나는 우아하고 효율적인 코드를 좋아한다. 논리가 간단해야 버그가 숨어들지 못한 다. 의존성을 최대한 줄여야 유지보수가 쉬워진다. 오류는 명백한 전략에 의거해 철 저히 처리한다. 성능을 최적으로 유지해야 사람들이 원칙 없는 최적화로 코드를 망 치려는 유혹에 빠지지 않는다. 깨끗한 코드는 한 가지를 제대로 한다.
  • 17. 그레디 부치(객체지향 대가) 깨끗한 코드는 단순하고 직접적이다. 깨끗한 코드는 잘 쓴 문장처럼 읽힌다. 깨 끗한 코드는 결코 설계자의 의도를 숨기지 않는다. 오히려 명쾌한 추상화와 단순 한 제어문으로 가득하다.
  • 18. 데이브 토마스(실용주의 프로그래머) 깨끗한 코드는 작성자가 아닌 사람도 읽기 쉽고 고치기 쉽다. 단위 테스트 케이스와 수용 테스트 케이스가 존재한다. 이런 이름은 의미가 있다. 특정 목적을 달성하는 방 법은 (여러 가지가 아니라) 하나만 제공한다. 의존성은 최소이며 각 의존성을 명확히 정의한다. API는 명확하며 최소로 줄였다. 때로는 필요한 정보 전부를 코드만으로 명 확하게 드러내기 어려우므로 언어에 따라 문학적 표현도 필요하다.
  • 19. 마이클 페더즈(“Working Effectively with Legacy Code” 저자) 깨끗한 코드의 특징은 많지만 그 중에서도 모두를 아우르는 특징이 하나 있다. 깨끗 한 코드는 언제나 누군가 주의 깊게 짰다는 느낌을 준다. 고치려고 살펴봐도 딱히 손 댈 곳이 없다. 작성자가 이미 모든 사항을 고려했으므로. 고칠 궁리를 하다보면 언제 나 제자리로 돌아온다. 그리고는 누군가 남겨준 코드, 누군가 주의 깊게 짜놓은 작에 감사를 느낀다.
  • 20. 론 제프리(“Extreme Programming Installed” 저자) 최근 들어 나는 [켄트] 벡이 제안한 간단한 코드 규칙으로 구현을 시작 한다. (그리고 같은 규칙으로 구현을 거의 끝낸다.) 중요한 순으로 나 열하자면 간단한 코드는 1)모든 테스트를 통과한다. 2)중복이 없다. 3)시스템 내 모든 설계 아이디어를 표현한다. 4)클래스, 메소드, 함수 등을 최대한 줄인다. 물론 나는 주로 중복에 집중한다. 같은 작업을 여러 차례 반복한다면 코드가 아이디어를 제대로 표현하지 못한다는 증거다. 나는 문제의 아이디어를 찾아내 좀더 명확하게 표현하려 애쓴다. 중복 줄이기, 표현력 높이기, 초반부터 간단한 추상화 고려하기. 내게 는 이 세 가지가 깨끗한 코드를 만드는 비결이다.
  • 21. 워드 커닝엄(위키 창시자, 피트 창시자, 익스트림 프로그래밍 창시자) 코드를 읽으면서 짐작했던 기능을 각 루틴이 그대로 수행한다면 깨끗 한 코드라 불러도 되겠다. 코드가 그 문제를 풀기 위한 언어처럼 보인 다면 아름다운 코드라 불러도 되겠다.
  • 25. 읽기: 쓰기 = 10: 1 비율이 이렇게 높으므로 읽기 쉬운 코드가 매우 중요하다. 비록 읽기 쉬운 코드를 짜기가 쉽지는 않더라도 말이다. 하 지만 기존 코드를 읽어야 새 코드를 짜므로 읽기 쉽게 만들 면 사실은 짜기도 쉬워진다. 이 논리에서 빠져나갈 방법은 없다. 주변 코드를 읽지 않으 면 새 코드를 짜지 못한다. 주변 코드를 읽기가 쉬우면 새 코드를 짜기도 쉽다. 주변 코드를 읽기가 어려우면 새 코드 를 짜기도 어렵다. 그러므로 급하다면, 서둘러 끝내려면, 쉽게 짜려면, 읽기 쉽게 만들면 된다.
  • 27. 시간이 지나도 언제나 코드를 깨끗하게 유지해야 한다. 미국 보이 스카우트가 따르는 규칙 “캠프장은 처음 왔을 때보다 더 깨끗하게 해놓고 떠나라.”
  • 31. 이 책엔 나쁜 코드를 좋은 코드로 바꾸는 방법을 소개한다. 나머진 여러분에게 달렸다.
  • 34. End