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일 토요일

More Related Content

PPTX
Clean code chapter1
PPTX
신입 SW 개발자 취업 준비
PDF
왜 Swift를 해야할까요?
PDF
SW Maestro 1-1 Project Keynote PDF
PDF
Technicalinterview
PPTX
임태현, 프로그래머 생존 가이드
PDF
손코딩뇌컴파일눈디버깅을 소개합니다.
PDF
코드 리뷰 시스템 소개
Clean code chapter1
신입 SW 개발자 취업 준비
왜 Swift를 해야할까요?
SW Maestro 1-1 Project Keynote PDF
Technicalinterview
임태현, 프로그래머 생존 가이드
손코딩뇌컴파일눈디버깅을 소개합니다.
코드 리뷰 시스템 소개

What's hot (11)

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

Viewers also liked (20)

PDF
Clean code Chapter.2
PDF
함수적 사고 2장
PDF
Mining the social web ch1
PDF
MutiCore 19-20
PPT
Abstract factory petterns
PDF
Elastic search 클러스터관리
PDF
7가지 동시성 모델 - 데이터 병렬성
PDF
HTTP 완벽가이드 1장.
PPTX
깨끗한 코드 (클린 코드, Clean Code)
PPTX
[2012 01 28]cleancode 1장
PDF
To become Open Source Contributor
PDF
PDF
프로그래머로 사는 법 Ch6
PDF
Clean code ch15
PPT
Clean code chapter11 - systems
PPTX
Clean code(04)
PPTX
Clean code(03)
PPTX
Clean code(02)
PPTX
Clean code(01)
PPTX
Clean code(05)
Clean code Chapter.2
함수적 사고 2장
Mining the social web ch1
MutiCore 19-20
Abstract factory petterns
Elastic search 클러스터관리
7가지 동시성 모델 - 데이터 병렬성
HTTP 완벽가이드 1장.
깨끗한 코드 (클린 코드, Clean Code)
[2012 01 28]cleancode 1장
To become Open Source Contributor
프로그래머로 사는 법 Ch6
Clean code ch15
Clean code chapter11 - systems
Clean code(04)
Clean code(03)
Clean code(02)
Clean code(01)
Clean code(05)
Ad

Similar to Chean code chapter 1 (20)

PPTX
Clean code
PPTX
클린코드와 TDD
PDF
우아하게 준비하는 테스트와 리팩토링 - PyCon Korea 2018
PPTX
Load to Clean code
PPTX
[2012 03 17]clean_code 14장 점진적개선
PDF
클린 코드 part1
PDF
The Introduction to Refactoring
PDF
C++ 코드 품질 관리 비법
PPTX
Coding Conventions & Secure Coding
PPTX
Clean code
PPTX
Dev rookie codecomplete-1
PPTX
Code complete chapter 19, 20 organize
PPTX
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
PDF
NHN 게임서버엔진팀 리빌딩과 운영 방침.pdf
PDF
코드의 품질 (Code Quality)
PDF
코드의 품질
PDF
테스트 기발 개발, TBD(Test based developement)
PPTX
2015 나는 프로그래머다 컨퍼런스 (11) 염산악 - 가독성에 대하여
PPTX
Refactoring tutorial
PPTX
C++ 코딩의 정석.pptx
Clean code
클린코드와 TDD
우아하게 준비하는 테스트와 리팩토링 - PyCon Korea 2018
Load to Clean code
[2012 03 17]clean_code 14장 점진적개선
클린 코드 part1
The Introduction to Refactoring
C++ 코드 품질 관리 비법
Coding Conventions & Secure Coding
Clean code
Dev rookie codecomplete-1
Code complete chapter 19, 20 organize
[NDC12] 변화량 분석을 중심으로 한 저비용 고효율의 지속가능한 코드퀄리티 관리법 - 송창규
NHN 게임서버엔진팀 리빌딩과 운영 방침.pdf
코드의 품질 (Code Quality)
코드의 품질
테스트 기발 개발, TBD(Test based developement)
2015 나는 프로그래머다 컨퍼런스 (11) 염산악 - 가독성에 대하여
Refactoring tutorial
C++ 코딩의 정석.pptx

More from HyeonSeok Choi (20)

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