SlideShare uma empresa Scribd logo
1 de 11
Baixar para ler offline
Clean Code
     Ch.1 클린코드

     chois79




12년 7월 14일 토요일
목차

     • 코드가 중요한 이유


     • 나쁜 코드가 문제인 이유


     • 클린 코드 정의 및 작성법




12년 7월 14일 토요일
코드가 존재하리라

     • 코드를 다루는 책이라니?


         • 시대 착오적 생각? <== No


         • 코드는 요구 사항을 상세히 표현하는 수단


             • 어느 수준에 이르면 상세 표현은 불가피




12년 7월 14일 토요일
나쁜 코드

     • 톰 홀웨다(http://www.osnews.com/story/19266/WTFs_m)


         • 코드 품질을 측정하는 유일한 척도 = 분당 내지르는 WTF! 횟수




     • 왜 나쁜 코드가 생성 되는가?


         • 급해서? 서두르느라? 나중에 수정?


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


12년 7월 14일 토요일
o way at all.
  As the mess builds, the productivity of the team continues to decrease, asymptotically
 roaching zero. As productivity decreases, management does the only thing they can;
y add more staff to the project in hopes of increasing productivity. But that new staff is

        나쁜 코드로 치르는 대가
 versed in the design of the system. They don’t know the difference between a change
t matches the design intent and a change that thwarts the design intent. Furthermore,
y, and everyone else on the team, are under horrific pressure to increase productivity. So
y all make more and more messes, driving the productivity ever further toward zero.
e Figure 1-1.)

        • 점진적인 생산성 저하




                                     Figure 1-1
        • 그럼 기존 시스템을 처음부터 다시 만들면 될까?
                 Productivity vs. time



              • 새 시스템이 개발되는 동안 기존 시스템에 변경이 가해짐


              • 결국, 두 시스템 간의 차이를 없애는데 많은 시간이 소요 됨.




 12년 7월 14일 토요일
무엇이 문제인가?

     • 좋은 코드가 왜 나쁜 코드로 변할까?


         • 설계를 뒤집는 방향으로 변경된 요구사항 때문에?


         • 일정이 촉박해서?


         • 조급한 고객 및 관리자 때문에?


     • No, 프로그래머가 전문가 답지 못했기 때문이다


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


         • 나쁜 코드는 오히려 업무 속력을 떨어 뜨린다


12년 7월 14일 토요일
클린 코드라는 예술

     • 클린 코드를 어떻게 작성할까?


         • 나쁜 코드 식별 능력이 클린코드 작성 능력은 아님


         • “청결”이라는 감각으로 자잘한 기법들을 적용하는 절제와 규율이 필요


             • “코드 감각”이 중요




12년 7월 14일 토요일
클린 코드 정의

     • 비야네 스트롭스트룹 - C++ 창시자


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


     • 그래디 부치 - “Object Oriented Analysis and Design with Application”


         • 클린코드는 단순한고           직접적이다. 클린코드는 잘 쓴 문장처럼 읽힌
           다. 클린코드는 결코 설계자의 의도를 숨기지 않는다. 오히려 명쾌한 추상화와
           단순한 제어문으로 가득한다.



12년 7월 14일 토요일
클린 코드 정의

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


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


     • 론 제프리 - “Extreme Programming Installed”


         • 모든 테스트를   통과한다. 중복이 없다. 시스템 내 모든 설계 아이디어
           를 표현 한다. 클래스, 메소드 함수 등을 최대한 줄인다.


12년 7월 14일 토요일
클린 코드 정의

     • 마이클 페더 - “Working Effectively with Legacy Code”


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


     • 워드 커닝엄 - 위키 창시자, 익스트림 프로그래밍 공동 창시자


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


12년 7월 14일 토요일
저자의 생각 - 엉클 밥

     • 이 책은 오브젝트 멘토 진영의 생각을 반영


         • 책에 전반적으로 자세히 표현


     • 읽기 쉬운 코드가 매우 중요


         • 개발 과정에서 코드 읽기와 작성의 비율은 10:1이상


     • 보이 스카우트 규칙


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


         • 코드를 잘 짰다고 끝나는 것이 아니라 항상 깨끗하게 유지하는 것이 중요!


12년 7월 14일 토요일

Mais conteúdo relacionado

Mais procurados

20211030 청소년이 바꾸는 세상 톡톡 진로콘서트 - 개발자라는직업
20211030 청소년이 바꾸는 세상 톡톡 진로콘서트 - 개발자라는직업20211030 청소년이 바꾸는 세상 톡톡 진로콘서트 - 개발자라는직업
20211030 청소년이 바꾸는 세상 톡톡 진로콘서트 - 개발자라는직업Junseo Youn
 
(독서광) 프로그래머의 뇌
(독서광) 프로그래머의 뇌(독서광) 프로그래머의 뇌
(독서광) 프로그래머의 뇌Jay Park
 
소프트웨어 설계 악취: 기술 부채 관리 방법
소프트웨어 설계 악취: 기술 부채 관리 방법소프트웨어 설계 악취: 기술 부채 관리 방법
소프트웨어 설계 악취: 기술 부채 관리 방법Jay Park
 
[TECHCON 2019: MOBILE - iOS]2.들숨에 협업 날숨에 클린코드
[TECHCON 2019: MOBILE - iOS]2.들숨에 협업 날숨에 클린코드[TECHCON 2019: MOBILE - iOS]2.들숨에 협업 날숨에 클린코드
[TECHCON 2019: MOBILE - iOS]2.들숨에 협업 날숨에 클린코드NAVER Engineering
 
Slipp clojure-1212
Slipp clojure-1212Slipp clojure-1212
Slipp clojure-1212완수 양
 
Clean code chapter9
Clean code chapter9Clean code chapter9
Clean code chapter9ukjinkwoun
 
(독서광) 1일 1로그 100일 완성 IT 지식
(독서광) 1일 1로그 100일 완성 IT 지식(독서광) 1일 1로그 100일 완성 IT 지식
(독서광) 1일 1로그 100일 완성 IT 지식Jay Park
 
프로그래밍 대회 문제 제작하기
프로그래밍 대회 문제 제작하기프로그래밍 대회 문제 제작하기
프로그래밍 대회 문제 제작하기인서 박
 
(독서광) 실용주의 프로그래머 20주년 기념판
(독서광) 실용주의 프로그래머 20주년 기념판(독서광) 실용주의 프로그래머 20주년 기념판
(독서광) 실용주의 프로그래머 20주년 기념판Jay Park
 
훌륭한 프로그래머 되는 법
훌륭한 프로그래머 되는 법훌륭한 프로그래머 되는 법
훌륭한 프로그래머 되는 법Kai [Kyung Seok] Song
 

Mais procurados (11)

20211030 청소년이 바꾸는 세상 톡톡 진로콘서트 - 개발자라는직업
20211030 청소년이 바꾸는 세상 톡톡 진로콘서트 - 개발자라는직업20211030 청소년이 바꾸는 세상 톡톡 진로콘서트 - 개발자라는직업
20211030 청소년이 바꾸는 세상 톡톡 진로콘서트 - 개발자라는직업
 
(독서광) 프로그래머의 뇌
(독서광) 프로그래머의 뇌(독서광) 프로그래머의 뇌
(독서광) 프로그래머의 뇌
 
소프트웨어 설계 악취: 기술 부채 관리 방법
소프트웨어 설계 악취: 기술 부채 관리 방법소프트웨어 설계 악취: 기술 부채 관리 방법
소프트웨어 설계 악취: 기술 부채 관리 방법
 
[TECHCON 2019: MOBILE - iOS]2.들숨에 협업 날숨에 클린코드
[TECHCON 2019: MOBILE - iOS]2.들숨에 협업 날숨에 클린코드[TECHCON 2019: MOBILE - iOS]2.들숨에 협업 날숨에 클린코드
[TECHCON 2019: MOBILE - iOS]2.들숨에 협업 날숨에 클린코드
 
Slipp clojure-1212
Slipp clojure-1212Slipp clojure-1212
Slipp clojure-1212
 
Clean code chapter9
Clean code chapter9Clean code chapter9
Clean code chapter9
 
(독서광) 1일 1로그 100일 완성 IT 지식
(독서광) 1일 1로그 100일 완성 IT 지식(독서광) 1일 1로그 100일 완성 IT 지식
(독서광) 1일 1로그 100일 완성 IT 지식
 
프로그래밍 대회 문제 제작하기
프로그래밍 대회 문제 제작하기프로그래밍 대회 문제 제작하기
프로그래밍 대회 문제 제작하기
 
프로그래머
프로그래머프로그래머
프로그래머
 
(독서광) 실용주의 프로그래머 20주년 기념판
(독서광) 실용주의 프로그래머 20주년 기념판(독서광) 실용주의 프로그래머 20주년 기념판
(독서광) 실용주의 프로그래머 20주년 기념판
 
훌륭한 프로그래머 되는 법
훌륭한 프로그래머 되는 법훌륭한 프로그래머 되는 법
훌륭한 프로그래머 되는 법
 

Destaque

Mining the social web ch1
Mining the social web ch1Mining the social web ch1
Mining the social web ch1HyeonSeok Choi
 
Abstract factory petterns
Abstract factory petternsAbstract factory petterns
Abstract factory petternsHyeonSeok Choi
 
Elastic search 클러스터관리
Elastic search 클러스터관리Elastic search 클러스터관리
Elastic search 클러스터관리HyeonSeok Choi
 
7가지 동시성 모델 - 데이터 병렬성
7가지 동시성 모델 - 데이터 병렬성7가지 동시성 모델 - 데이터 병렬성
7가지 동시성 모델 - 데이터 병렬성HyeonSeok Choi
 
HTTP 완벽가이드 1장.
HTTP 완벽가이드 1장.HTTP 완벽가이드 1장.
HTTP 완벽가이드 1장.HyeonSeok Choi
 
깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)Jay Park
 
[2012 01 28]cleancode 1장
[2012 01 28]cleancode 1장[2012 01 28]cleancode 1장
[2012 01 28]cleancode 1장Jong Pil Won
 
To become Open Source Contributor
To become Open Source ContributorTo become Open Source Contributor
To become Open Source ContributorDaeMyung Kang
 
프로그래머로 사는 법 Ch6
프로그래머로 사는 법 Ch6프로그래머로 사는 법 Ch6
프로그래머로 사는 법 Ch6HyeonSeok Choi
 
Clean code chapter11 - systems
Clean code   chapter11 - systemsClean code   chapter11 - systems
Clean code chapter11 - systemsitomcc
 
Clean code(04)
Clean code(04)Clean code(04)
Clean code(04)규열 김
 
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(01)
Clean code(01)Clean code(01)
Clean code(01)규열 김
 
Clean code(05)
Clean code(05)Clean code(05)
Clean code(05)규열 김
 

Destaque (20)

Clean code Chapter.2
Clean code Chapter.2Clean code Chapter.2
Clean code Chapter.2
 
함수적 사고 2장
함수적 사고 2장함수적 사고 2장
함수적 사고 2장
 
Mining the social web ch1
Mining the social web ch1Mining the social web ch1
Mining the social web ch1
 
MutiCore 19-20
MutiCore 19-20MutiCore 19-20
MutiCore 19-20
 
Abstract factory petterns
Abstract factory petternsAbstract factory petterns
Abstract factory petterns
 
Elastic search 클러스터관리
Elastic search 클러스터관리Elastic search 클러스터관리
Elastic search 클러스터관리
 
7가지 동시성 모델 - 데이터 병렬성
7가지 동시성 모델 - 데이터 병렬성7가지 동시성 모델 - 데이터 병렬성
7가지 동시성 모델 - 데이터 병렬성
 
HTTP 완벽가이드 1장.
HTTP 완벽가이드 1장.HTTP 완벽가이드 1장.
HTTP 완벽가이드 1장.
 
깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)
 
[2012 01 28]cleancode 1장
[2012 01 28]cleancode 1장[2012 01 28]cleancode 1장
[2012 01 28]cleancode 1장
 
To become Open Source Contributor
To become Open Source ContributorTo become Open Source Contributor
To become Open Source Contributor
 
Ooa&d
Ooa&dOoa&d
Ooa&d
 
프로그래머로 사는 법 Ch6
프로그래머로 사는 법 Ch6프로그래머로 사는 법 Ch6
프로그래머로 사는 법 Ch6
 
Clean code ch15
Clean code ch15Clean code ch15
Clean code ch15
 
Clean code chapter11 - systems
Clean code   chapter11 - systemsClean code   chapter11 - systems
Clean code chapter11 - systems
 
Clean code(04)
Clean code(04)Clean code(04)
Clean code(04)
 
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(01)
Clean code(01)Clean code(01)
Clean code(01)
 
Clean code(05)
Clean code(05)Clean code(05)
Clean code(05)
 

Semelhante a Chean code chapter 1

NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할Hoyoung Choi
 
(책 소개) 레거시 코드 활용 전략
(책 소개) 레거시 코드 활용 전략(책 소개) 레거시 코드 활용 전략
(책 소개) 레거시 코드 활용 전략Jay Park
 
"행복한 백발의 개발자"라는 제목으로 2024-03-06 어느 IT 업체에서 직책자로 승진한 분들을 대상으로 한...
"행복한 백발의 개발자"라는 제목으로 2024-03-06 어느 IT 업체에서 직책자로 승진한 분들을 대상으로 한..."행복한 백발의 개발자"라는 제목으로 2024-03-06 어느 IT 업체에서 직책자로 승진한 분들을 대상으로 한...
"행복한 백발의 개발자"라는 제목으로 2024-03-06 어느 IT 업체에서 직책자로 승진한 분들을 대상으로 한...Myeongseok Baek
 
애자일 프랙티스
애자일 프랙티스애자일 프랙티스
애자일 프랙티스한 경만
 
2022 01-okky-코드리뷰
2022 01-okky-코드리뷰2022 01-okky-코드리뷰
2022 01-okky-코드리뷰Myeongseok Baek
 
Code Review - DevOn2013
Code Review - DevOn2013Code Review - DevOn2013
Code Review - DevOn2013호정 이
 
Dev rookie codecomplete-1
Dev rookie codecomplete-1Dev rookie codecomplete-1
Dev rookie codecomplete-1대영 노
 
C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법선협 이
 
클린 코드 part1
클린 코드 part1클린 코드 part1
클린 코드 part1Minseok Jang
 
오픈소스 소프트웨어 개발, 어디서부터 시작하는게 좋을까요? @ CNU(충남대)
오픈소스 소프트웨어 개발, 어디서부터 시작하는게 좋을까요? @ CNU(충남대)오픈소스 소프트웨어 개발, 어디서부터 시작하는게 좋을까요? @ CNU(충남대)
오픈소스 소프트웨어 개발, 어디서부터 시작하는게 좋을까요? @ CNU(충남대)Jaewon Choi
 
TDD - 테스트 주도로 개발하기
TDD - 테스트 주도로 개발하기TDD - 테스트 주도로 개발하기
TDD - 테스트 주도로 개발하기현승 배
 
[RAPA/C++] 1. 수업 내용 및 진행 방법
[RAPA/C++] 1. 수업 내용 및 진행 방법[RAPA/C++] 1. 수업 내용 및 진행 방법
[RAPA/C++] 1. 수업 내용 및 진행 방법MinGeun Park
 
[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
 
애자일 하라
애자일 하라애자일 하라
애자일 하라진수 허
 
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018devCAT Studio, NEXON
 
임태현, 서버점검 제로에의 도전, NDC2011
임태현, 서버점검 제로에의 도전, NDC2011임태현, 서버점검 제로에의 도전, NDC2011
임태현, 서버점검 제로에의 도전, NDC2011devCAT Studio, NEXON
 
꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)
꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)
꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)VMware Tanzu Korea
 
SWDeveloprStory201601
SWDeveloprStory201601SWDeveloprStory201601
SWDeveloprStory201601Suho Kwon
 

Semelhante a Chean code chapter 1 (20)

NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할
 
(책 소개) 레거시 코드 활용 전략
(책 소개) 레거시 코드 활용 전략(책 소개) 레거시 코드 활용 전략
(책 소개) 레거시 코드 활용 전략
 
"행복한 백발의 개발자"라는 제목으로 2024-03-06 어느 IT 업체에서 직책자로 승진한 분들을 대상으로 한...
"행복한 백발의 개발자"라는 제목으로 2024-03-06 어느 IT 업체에서 직책자로 승진한 분들을 대상으로 한..."행복한 백발의 개발자"라는 제목으로 2024-03-06 어느 IT 업체에서 직책자로 승진한 분들을 대상으로 한...
"행복한 백발의 개발자"라는 제목으로 2024-03-06 어느 IT 업체에서 직책자로 승진한 분들을 대상으로 한...
 
애자일 프랙티스
애자일 프랙티스애자일 프랙티스
애자일 프랙티스
 
2022 01-okky-코드리뷰
2022 01-okky-코드리뷰2022 01-okky-코드리뷰
2022 01-okky-코드리뷰
 
TDD
TDDTDD
TDD
 
Code Review - DevOn2013
Code Review - DevOn2013Code Review - DevOn2013
Code Review - DevOn2013
 
Dev rookie codecomplete-1
Dev rookie codecomplete-1Dev rookie codecomplete-1
Dev rookie codecomplete-1
 
C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법
 
클린 코드 part1
클린 코드 part1클린 코드 part1
클린 코드 part1
 
오픈소스 소프트웨어 개발, 어디서부터 시작하는게 좋을까요? @ CNU(충남대)
오픈소스 소프트웨어 개발, 어디서부터 시작하는게 좋을까요? @ CNU(충남대)오픈소스 소프트웨어 개발, 어디서부터 시작하는게 좋을까요? @ CNU(충남대)
오픈소스 소프트웨어 개발, 어디서부터 시작하는게 좋을까요? @ CNU(충남대)
 
TDD - 테스트 주도로 개발하기
TDD - 테스트 주도로 개발하기TDD - 테스트 주도로 개발하기
TDD - 테스트 주도로 개발하기
 
[RAPA/C++] 1. 수업 내용 및 진행 방법
[RAPA/C++] 1. 수업 내용 및 진행 방법[RAPA/C++] 1. 수업 내용 및 진행 방법
[RAPA/C++] 1. 수업 내용 및 진행 방법
 
[2012 03 17]clean_code 14장 점진적개선
[2012 03 17]clean_code 14장 점진적개선[2012 03 17]clean_code 14장 점진적개선
[2012 03 17]clean_code 14장 점진적개선
 
애자일 하라
애자일 하라애자일 하라
애자일 하라
 
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
 
임태현, 서버점검 제로에의 도전, NDC2011
임태현, 서버점검 제로에의 도전, NDC2011임태현, 서버점검 제로에의 도전, NDC2011
임태현, 서버점검 제로에의 도전, NDC2011
 
꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)
꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)
꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)
 
Microservice coding guide
Microservice coding guideMicroservice coding guide
Microservice coding guide
 
SWDeveloprStory201601
SWDeveloprStory201601SWDeveloprStory201601
SWDeveloprStory201601
 

Mais de HyeonSeok Choi

밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05HyeonSeok Choi
 
밑바닥부터시작하는딥러닝 Ch2
밑바닥부터시작하는딥러닝 Ch2밑바닥부터시작하는딥러닝 Ch2
밑바닥부터시작하는딥러닝 Ch2HyeonSeok Choi
 
프로그래머를위한선형대수학1.2
프로그래머를위한선형대수학1.2프로그래머를위한선형대수학1.2
프로그래머를위한선형대수학1.2HyeonSeok Choi
 
알고리즘 중심의 머신러닝 가이드 Ch04
알고리즘 중심의 머신러닝 가이드 Ch04알고리즘 중심의 머신러닝 가이드 Ch04
알고리즘 중심의 머신러닝 가이드 Ch04HyeonSeok Choi
 
딥러닝 제대로시작하기 Ch04
딥러닝 제대로시작하기 Ch04딥러닝 제대로시작하기 Ch04
딥러닝 제대로시작하기 Ch04HyeonSeok Choi
 
밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05HyeonSeok Choi
 
7가지 동시성 모델 4장
7가지 동시성 모델 4장7가지 동시성 모델 4장
7가지 동시성 모델 4장HyeonSeok Choi
 
실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8HyeonSeok Choi
 
실무로 배우는 시스템 성능 최적화 Ch7
실무로 배우는 시스템 성능 최적화 Ch7실무로 배우는 시스템 성능 최적화 Ch7
실무로 배우는 시스템 성능 최적화 Ch7HyeonSeok Choi
 
실무로 배우는 시스템 성능 최적화 Ch6
실무로 배우는 시스템 성능 최적화 Ch6실무로 배우는 시스템 성능 최적화 Ch6
실무로 배우는 시스템 성능 최적화 Ch6HyeonSeok Choi
 
Logstash, ElasticSearch, Kibana
Logstash, ElasticSearch, KibanaLogstash, ElasticSearch, Kibana
Logstash, ElasticSearch, KibanaHyeonSeok Choi
 
실무로배우는시스템성능최적화 Ch1
실무로배우는시스템성능최적화 Ch1실무로배우는시스템성능최적화 Ch1
실무로배우는시스템성능최적화 Ch1HyeonSeok Choi
 
HTTP 완벽가이드 21장
HTTP 완벽가이드 21장HTTP 완벽가이드 21장
HTTP 완벽가이드 21장HyeonSeok Choi
 
HTTP 완벽가이드 16장
HTTP 완벽가이드 16장HTTP 완벽가이드 16장
HTTP 완벽가이드 16장HyeonSeok Choi
 
HTTP 완벽가이드 6장.
HTTP 완벽가이드 6장.HTTP 완벽가이드 6장.
HTTP 완벽가이드 6장.HyeonSeok Choi
 

Mais de HyeonSeok Choi (20)

밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05
 
밑바닥부터시작하는딥러닝 Ch2
밑바닥부터시작하는딥러닝 Ch2밑바닥부터시작하는딥러닝 Ch2
밑바닥부터시작하는딥러닝 Ch2
 
프로그래머를위한선형대수학1.2
프로그래머를위한선형대수학1.2프로그래머를위한선형대수학1.2
프로그래머를위한선형대수학1.2
 
알고리즘 중심의 머신러닝 가이드 Ch04
알고리즘 중심의 머신러닝 가이드 Ch04알고리즘 중심의 머신러닝 가이드 Ch04
알고리즘 중심의 머신러닝 가이드 Ch04
 
딥러닝 제대로시작하기 Ch04
딥러닝 제대로시작하기 Ch04딥러닝 제대로시작하기 Ch04
딥러닝 제대로시작하기 Ch04
 
밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05
 
7가지 동시성 모델 4장
7가지 동시성 모델 4장7가지 동시성 모델 4장
7가지 동시성 모델 4장
 
Bounded Context
Bounded ContextBounded Context
Bounded Context
 
DDD Repository
DDD RepositoryDDD Repository
DDD Repository
 
DDD Start Ch#3
DDD Start Ch#3DDD Start Ch#3
DDD Start Ch#3
 
실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8
 
실무로 배우는 시스템 성능 최적화 Ch7
실무로 배우는 시스템 성능 최적화 Ch7실무로 배우는 시스템 성능 최적화 Ch7
실무로 배우는 시스템 성능 최적화 Ch7
 
실무로 배우는 시스템 성능 최적화 Ch6
실무로 배우는 시스템 성능 최적화 Ch6실무로 배우는 시스템 성능 최적화 Ch6
실무로 배우는 시스템 성능 최적화 Ch6
 
Logstash, ElasticSearch, Kibana
Logstash, ElasticSearch, KibanaLogstash, ElasticSearch, Kibana
Logstash, ElasticSearch, Kibana
 
실무로배우는시스템성능최적화 Ch1
실무로배우는시스템성능최적화 Ch1실무로배우는시스템성능최적화 Ch1
실무로배우는시스템성능최적화 Ch1
 
HTTP 완벽가이드 21장
HTTP 완벽가이드 21장HTTP 완벽가이드 21장
HTTP 완벽가이드 21장
 
HTTP 완벽가이드 16장
HTTP 완벽가이드 16장HTTP 완벽가이드 16장
HTTP 완벽가이드 16장
 
HTTPS
HTTPSHTTPS
HTTPS
 
HTTP 완벽가이드 6장.
HTTP 완벽가이드 6장.HTTP 완벽가이드 6장.
HTTP 완벽가이드 6장.
 
Cluster - spark
Cluster - sparkCluster - spark
Cluster - spark
 

Chean code chapter 1

  • 1. Clean Code Ch.1 클린코드 chois79 12년 7월 14일 토요일
  • 2. 목차 • 코드가 중요한 이유 • 나쁜 코드가 문제인 이유 • 클린 코드 정의 및 작성법 12년 7월 14일 토요일
  • 3. 코드가 존재하리라 • 코드를 다루는 책이라니? • 시대 착오적 생각? <== No • 코드는 요구 사항을 상세히 표현하는 수단 • 어느 수준에 이르면 상세 표현은 불가피 12년 7월 14일 토요일
  • 4. 나쁜 코드 • 톰 홀웨다(http://www.osnews.com/story/19266/WTFs_m) • 코드 품질을 측정하는 유일한 척도 = 분당 내지르는 WTF! 횟수 • 왜 나쁜 코드가 생성 되는가? • 급해서? 서두르느라? 나중에 수정? • 르블랑의 법칙: “나중은 결코 오지 않는다” 12년 7월 14일 토요일
  • 5. o way at all. As the mess builds, the productivity of the team continues to decrease, asymptotically roaching zero. As productivity decreases, management does the only thing they can; y add more staff to the project in hopes of increasing productivity. But that new staff is 나쁜 코드로 치르는 대가 versed in the design of the system. They don’t know the difference between a change t matches the design intent and a change that thwarts the design intent. Furthermore, y, and everyone else on the team, are under horrific pressure to increase productivity. So y all make more and more messes, driving the productivity ever further toward zero. e Figure 1-1.) • 점진적인 생산성 저하 Figure 1-1 • 그럼 기존 시스템을 처음부터 다시 만들면 될까? Productivity vs. time • 새 시스템이 개발되는 동안 기존 시스템에 변경이 가해짐 • 결국, 두 시스템 간의 차이를 없애는데 많은 시간이 소요 됨. 12년 7월 14일 토요일
  • 6. 무엇이 문제인가? • 좋은 코드가 왜 나쁜 코드로 변할까? • 설계를 뒤집는 방향으로 변경된 요구사항 때문에? • 일정이 촉박해서? • 조급한 고객 및 관리자 때문에? • No, 프로그래머가 전문가 답지 못했기 때문이다 • 좋은 코드를 사수하는 것은 프로그래머의 책임 • 나쁜 코드는 오히려 업무 속력을 떨어 뜨린다 12년 7월 14일 토요일
  • 7. 클린 코드라는 예술 • 클린 코드를 어떻게 작성할까? • 나쁜 코드 식별 능력이 클린코드 작성 능력은 아님 • “청결”이라는 감각으로 자잘한 기법들을 적용하는 절제와 규율이 필요 • “코드 감각”이 중요 12년 7월 14일 토요일
  • 8. 클린 코드 정의 • 비야네 스트롭스트룹 - C++ 창시자 • 나는 우아하고 효율적인 코드를 좋아한다. 논리가 간단해야 버그가 숨어들지 못한다. 의존성을 최대한 줄여야 유지보수가 쉬워진다. 오류는 명백한 전략에 의 거해 철저히 처리한다. 성능을 최적으로 유지해야 사람들이 원칙 없는 최적화로 코드를 망치려는 유혹에 빠지지 않는다. 클린 코드는 한가지를 제대로 한 다 • 그래디 부치 - “Object Oriented Analysis and Design with Application” • 클린코드는 단순한고 직접적이다. 클린코드는 잘 쓴 문장처럼 읽힌 다. 클린코드는 결코 설계자의 의도를 숨기지 않는다. 오히려 명쾌한 추상화와 단순한 제어문으로 가득한다. 12년 7월 14일 토요일
  • 9. 클린 코드 정의 • 데이브 토마스 - OTI 창립자이자 이클립스 전략의 대부 • 클린 코드는 작성자가 아닌 사람도 읽기 쉽고 고치기 쉽다. 단위 테스트 케이 스와 수용 테스트 케이스가 존재한다. 의미 있는 이름이다. 특정한 목적을 달성 하는 방법은 (여러가지가 아니라) 하나만 제공한다. 의존성은 최소이며 각 의존 성을 명확히 정의한다. API는 명확하며 최소로 줄였다. 때로는 필요한 정보 전부를 코드만으로 명확하게 드러내기 어려우므로 언어에 따라 문학적 표현이 필요하다. • 론 제프리 - “Extreme Programming Installed” • 모든 테스트를 통과한다. 중복이 없다. 시스템 내 모든 설계 아이디어 를 표현 한다. 클래스, 메소드 함수 등을 최대한 줄인다. 12년 7월 14일 토요일
  • 10. 클린 코드 정의 • 마이클 페더 - “Working Effectively with Legacy Code” • 클린 코드가 보이는 특징은 많지만 그 중에서도 모두를 아우르는 특징이 하나 있 다. 클린 코드는 언제나 누군가 주의 깊게 짰다는 느낌을 준다. 고치려고 살 펴봐도 딱히 솔 댈 곳이 없다. 작성자가 이미 모든 사항을 고려했으므로 고칠 궁 리를 하다보면 언제나 제자리로 돌아온다. 그리고는 누군가 남겨준 코드, 누군가 주의 깊게 짜 놓은 작품에 감사를 느낀다. • 워드 커닝엄 - 위키 창시자, 익스트림 프로그래밍 공동 창시자 • 코드를 읽으며 짐작했던 기능을 각 루틴이 그대로 수행한다면 클 린 코드라 불러도 되겠다. 코드가 그 문제를 풀기 위한 언어처럼 보인다면 아름 다운 코드라 불러도 되겠다. 12년 7월 14일 토요일
  • 11. 저자의 생각 - 엉클 밥 • 이 책은 오브젝트 멘토 진영의 생각을 반영 • 책에 전반적으로 자세히 표현 • 읽기 쉬운 코드가 매우 중요 • 개발 과정에서 코드 읽기와 작성의 비율은 10:1이상 • 보이 스카우트 규칙 • “캠프장은 처음 왔을 때보다 더 깨끗하게 해놓고 떠나라” • 코드를 잘 짰다고 끝나는 것이 아니라 항상 깨끗하게 유지하는 것이 중요! 12년 7월 14일 토요일