본문 바로가기
IT

Clean Code(클린 코드) | 로버트 C. 마틴 - 1. 깨끗한 코드 핵심 정리 리뷰

by geddy 2024. 1. 24.

이 글에서는 로버트 C. 마틴의 저서인 클린 코드에 대해서 소개하고 1장 깨끗한 코드에 대해서 설명합니다.

  • 클린 코드 - 로버트 C. 마틴
  • 1장 깨끗한 코드
  • 1장 깨끗한 코드의 ppt 발표 버전

Clean Code(클린 코드) | 로버트 C. 마틴 - 1. 깨끗한 코드 썸네일

클린 코드 - 로버트 C. 마틴


Clean Code: A Handbook of Agile Software Craftsmanship은 Uncle Bob으로도 알려진 Robert C. Martin이 쓴 책으로, 소프트웨어 개발을 위한 혁신적인 패러다임을 제시합니다. 이 책은 2008년 8월 Pearson에 의해 출판되었으며 ISBN은 9780136083238 입니다.

이 책에서 Uncle Bob은 깨끗하고 유지 관리가 가능하며 효율적인 코드 작성의 중요성을 강조하고 이러한 목표를 달성하기 위한 실용적인 팁과 기술을 제공합니다. 그는 무엇보다도 이름 지정, 서식 지정, 주석, 함수, 클래스, 오류 처리 및 테스트와 같은 주제를 다룹니다.

클린 코드는 소프트웨어 개발자에게 꼭 읽어야 할 책이 ​​되었으며 이 분야의 고전으로 널리 알려져 있습니다. 명확하고 간결한 문체와 실용적이고 실행 가능한 조언으로 찬사를 받았습니다.

책 외에도 Uncle Bob은 자신의 웹사이트 cleancoder.com을 통해 교육 과정을 제공합니다. 이 과정은 책에 설명된 클린 코드의 기본 사항을 가르치며 모든 수준의 프로그래머를 대상으로 합니다.

전반적으로 Robert C. Martin의 Clean Code는 코딩 기술을 향상하고 더 나은 소프트웨어를 작성하려는 소프트웨어 개발자에게 귀중한 자료입니다. 깨끗하고 유지 관리가 가능하며 효율적인 코드에 대한 강조는 소프트웨어 개발 분야에서 시대를 초월한 고전이 되었습니다.

저도 개발을 직업으로 하고 있는 사람 중 한 명으로, 이 책을 읽어보고 하나씩 정리해 보기 위해서 이 글을 작성하게 되었습니다.

오래 걸리겠지만, 지금 부터 천천히라도 한 챕터씩 올리도록 하겠습니다.

1장 깨끗한 코드


코드가 존재하리라

 

  • 기계가 실행할 정도로 상세하게 요구사항을 명시하는 작업, 바로 이것이 프로그래밍이고 코드이다!
  • 프로그래밍 언어에서 추상화 수준은 정차 높아지리라 예상한다.
  • 제대로 명시한 요구사항은 코드만큼 정형적이며 테스트 케이스로 사용해도 좋다는 사실이다!
  • 코드는 요구사항을 표현하는 언어이며 어느 순간에는 정밀한 표현이 필요하다. 그렇기 때문에 코드는 사라지지 않는다.
안경낀 여자 개발자  이미지
 

 

나쁜 코드

 

  • 나쁜 코드는 버그, 어려운 유지 관리, 회사 실패 등의 문제를 일으킨다.
  • 나쁜 코드를 작성하는 것은 "고행(mortification)"이라고 하는 프로그래머에게 자주 발생하는 문제이다.
  • 나쁜 코드를 작성하는 이유는 서두르거나 시간이 부족해서 발생한다.
  • Kent Beck의 책 "Implementation Patterns"는 좋은 코드 작성에 관해 나와있다.
  • 개발자는 나중에 나쁜 코드를 수정하겠다고 약속했지만 "나중“은 오지 않는다.

 

 

나쁜 코드로 치르는 대가

 

  • 매번 얽히고설킨 코드를 '해독'해서 얽히고 설킨 코드를 더한다.
  • 시간이 지나면서 쓰레기 더미는 점점 높아지고 깊어지고 커진다.
  • 결국 생산성이 0에 가까워 진지고 수정할 방법이 없다.

 

원대한 재설계의 꿈

 

  • 관리자는 재설계에 자원을 쏟아 붓기 싫지만 생산성이 바닥이라는 사실을 부인할 도리가 없습니다.
  • 결국은 팀이 요구하는 대로 원대한 재설계를 허락한다. 새로운 타이거 팀이 구성됩니다.
  • 모두가 타이거 팀에 합류하고 싶어 합니다. 나머지는 계속해서 현재 시스템을 유지 보수 합니다.
  • 타이거 팀은 기존 시스템 기능을 모두 제공하는 새 시스템을 내놓아야 합니다.
  • 새 시스템이 기존 시스템 기능을 100% 제공하지 않는 한 관리충은 기존 시스템을 대체하지 않습니다.
  • 새 시스템이 기존 시스템을 따라잡을 즈음이면 초창기 타이거 팀원들은 모두 팀을 떠났고 새로운 팀원들이 새시스템을 설계하자고 나섭니다. 왜? 현재 시스템이 너무 엉망이라서.

태도

  • 좋은 코드가 나쁜 코드로 바뀔 수 있는 이유는 다양합니다.
  • 요구 사항 변경, 빡빡한 일정, 잘못된 관리 결정 등이 있습니다.
  • 프로그래머가 생산하는 코드의 품질에 대한 궁극적인 책임이 있다고 주장합니다.
  • 프로그래머가 관리자 및 프로젝트 이해 관계자에게 정보와 조언을 적극적으로 제공해야 한다고 제안합니다.
  • 비현실적인 요구 사항이나 일정에 반대하더라도 좋은 코드를 유지하는 것은 프로그래머의 책임입니다.
  • 프로그래밍에서 프로페셔널리즘과 윤리적 책임의 중요성을 설명하기 위해 수술 전 손 씻기를 건너뛰는 것을 거부하는 의사의 비유를 사용합니다.
도도한 여자 개발자 이미지
 

 

원초적 난제

 

  • 프로그래머가 기본 가치의 균형을 맞추는 데 어려움을 겪는다.
  • 일정 vs 코드 품질
  • 잘못된 코드가 궁극적으로 진행 속도를 늦춘다는 점에 대해 설명합니다.
  • 프로그래머는 마감일을 맞추기 위해 잘못된 코드를 생성해야 한다고 느낄 수 있지만 실제 전문가는 이접근 방식이 비생산적이며 깨끗한 코드가 성공을 달성하고 마감일을 맞추는 열쇠라는 것을 알고 있습니다.
  • 프로그래머는 궁극적으로 효율적이고 효과적으로 코드를 최대한 깔끔하게 유지하는 습관을 들이는 것이 중요합니다.

 

깨끗한 코드라는 예술?

 

  • 깨끗한 코드를 구현하는 것은 페인팅과 유사합니다. 좋은 코드와 나쁜 코드를 구별할 수 있다고 해서 깨끗한 코드를 작성하는 방법을 안다는 의미는 아닙니다.
  • 깨끗한 코드를 작성하려면 자제력과 규율이 필요하며 "깨끗함"이라는 학습된 감각을 사용하여 미묘한 기술을 적용해야 합니다.
  • 열쇠는 어떤 프로그래머는 자연스럽게 가지고 있는 반면, 다른 프로그래머는 그것을 개발하기 위해 열심히 노력해야 하는 "코드 감각"을 갖는 것입니다.
  • "코드 감각"을 가진 프로그래머는 좋은 코드와 나쁜 코드를 구별할 수 있고 나쁜 코드를 좋은 코드로 바꾸는 전략을 식별할 수 있습니다.
  • 클린 코드 작성자는 좋은 코드로 나쁜 코드를 개선하는 방법을 생각하고 "코드 강도"로 최상의 계획을 선택하여 앞으로 나아갈 경로를 계획합니다.
  • 깨끗한 코드를 작성하는 프로그래머는 빈 캔버스를 우아한 예술 작품으로 바꾸는 화가와 같습니다.

 

깨끗한 코드란?

 

  • 프로그래머들은 깨끗한 코드에 대해 각자 다른 정의를 가짐
  • C++ 창시자인 비야네 스트롭스트룹은 우아하고 효율적인 코드를 지향하며, 코드의 의존성을 최소화하고 오류 처리를 철저히하며 성능을 유지하는 것이 중요하다고 언급함
  • 비야네는 깨끗한 코드가 보기에 즐거운 코드여야 한다고 강조하며, CPU 자원을 낭비하는 코드도 우아하지 않다고 지적함
  • 실용주의 프로그래머 데이브 토마스와 엔디 헌트는 깨진 창문 비유를 사용하여, 깨끗한 코드는 세부적인 부분까지 철저하게 관리하는 것이 중요하다고 강조함

 

우리들 생각

 

  • 책 『클린 코드』는 클린 코드를 작성하는 방법을 설명하고 저자와 동료들이 믿고 실천하는 교훈과 기법을 담고 있다.
  • 저자는 그들의 의견과 기술이 절대적인 사실이 아니며, 다른 경험자나 전문가들이 배울 점이 있음을 인정합니다.
  • 이 책은 저자가 수십 년 동안 경험과 반복된 시행착오를 통해 터득한 교훈과 기법을 추천한다.
  • 저자는 독자들이 자신의 관점에 동의하지 않더라도 이해와 존중을 요구한다.

 

우리는 저자다

 

  • Javadoc은 저자를 소개하기 위해 @author 필드를 사용합니다.
  • 저자는 독자와 잘 소통할 책임이 있습니다.
  • 독자는 코드를 기준으로 저자를 판단합니다.
  • 코드를 읽는 것은 코드를 작성하는 것보다 더 많은 노력이 필요합니다.
  • 새로운 코드를 작성하려면 읽기 쉬운 코드가 중요합니다.
  • 코드를 읽기 쉽게 만들면 새로운 코드를 더 쉽게 작성할 수 있습니다.
  • 주변 코드가 읽기 쉬우면 새로운 코드를 작성하기가 더 쉽습니다.

 

보이스카우트 규칙

 

  • 보이 스카우트 규칙은 자신이 머문 자리를 청소합니다.
  • 코드를 항상 깨끗하게 유지하는 것은 코드 퇴화를 방지하는 데 중요합니다.
  • 처음 도착했을 때보다 코드를 더 깔끔하게 놔두면 절대 나빠지지 않습니다.
  • 한 번에 코드를 정리하는 데 많은 시간과 노력을 들일 필요가 없습니다.
  • 하나의 변수 이름을 개선하거나 약간 더 긴 함수 하나를 분할하거나 일부 중복을 제거하면 코드를 정리하기에 충분합니다.
  • 시간이 지남에 따라 지속적으로 코드를 개선하는 것이 전문성의 본질입니다.

 

프리퀄과 원칙

 

  • 이 책은 Agile Software Development:Principle, Pattenrs, and Practices(PPP)의 프리퀄이다.
  • 이 책 에서는 다양한 설계 원칙을 산발적으로 거론 한다. SRP(Single Responsibility Principle),
  • OCP(Open Closed Principle), DIP(Dependency Inversion Principle)등이 그 예다. 각 원칙은 PPP에서 자세히 설명한다.
프리퀄(Prequel)은 전편보다 시간상으로 앞선 이야기를 보여주는 속편이다. 본편의 이야기가 
왜 그렇게 흘러가는지 설명하는 기능을 하며, 
전편이 흥행해서 후편을 만들고자 할 때 만들어지기도 한다.
여자 선생님 이미지

 

결론

 

  • 예술이나 프로그래밍에 관한 책을 읽는다고 해서 예술가나 훌륭한 프로그래머가 될 수 있다는 보장은 없습니다.
  • 이러한 책은 도구, 기술 및 사고 방식에 대한 소개일 뿐입니다.
  • 이 책은 위대한 프로그래머가 생각하는 방식과 그들이 사용하는 기술, 트릭 및 도구에 대한 소개서입니다.
  • 자세한 정보, 좋은 코드와 나쁜 코드 예제, 나쁜 코드를 좋은 코드로 바꾸는 방법이 포함되어 있습니다.
  • 책에는 많은 예가 나와 있지만 나머지는 독자의 몫입니다.
  • 음악가가 연주를 잘 하려면 연습이 필요하듯이 훌륭한 프로그래머가 되기 위해서는 연습이 필수적입니다.

 

 

 

1장 깨끗한 코드의 ppt 발표 버전


위의 텍스트로 보는 것 보다 더 편하게 보실 수 있도록 ppt 파워 포인트 버전을 아래에 슬라이드로 첨부하였습니다.

아래 ppt 파일은 다음의 버튼 링크에서 제공합니다.

클린코드 - 1장 깨끗한 코드 다운로드 | 파일 > 다운로드

필요하신 분들은 편하게 사용하셔도 좋습니다.

 

 

facebook twitter kakaoTalk kakaostory naver band shareLink