ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [책 리뷰] 클린 코드의 기술
    BOOK 2023. 5. 9. 23:49
    반응형

    클린 코드의 기술 / Christian Mayer / 영진닷컴 / 2023

     


     

    회사에서 좋은 기회로 '클린 코드의 기술' 역자가 직접 강연하는 세미나를 듣게 되었다. 그리하여 세미나 4시간 + 나의 리뷰를 섞어서 글을 써 보려고 한다.

    사내에서는 생각보다 많은 사람이 신청해서 강의실을 큰 곳으로 옮겼는데, 그 곳마저 만석이더랬다. 또 책을 나눠주는 줄은 몰랐어서 뜻밖의 수완이었다. 더 놀라운 것은 역자가 우리 회사 직원이라는 사실. 나도 나중에 책을 쓰거나 강연을 해 보고 싶은데, 회사를 다니면서도 그 활동을 할 수 있다는 생각을 해보지 못했다. 사실은 알고 있었지만 제대로 인지하지 못했달까? 지금부터라도 집필 활동에 관심을 가진다면 충분히 가능하겠다 - 라는 생각을 했다. 최근에 한빛미디어에서 관련 활동을 시작하기는 했는데 원서를 읽는 활동이라 너무 어려워서 미뤄두고 있다 😂😂 이번 주말에는 진짜 해야지.

     


     

    '무튼 서론이 길어졌으나, 본론으로 들어가자면 이 책은 How to be a good programmer? 라기보다는 How to live as a good programmer? 를 알려준다. 미래의 "BE" 보다는 현재의 "LIVE" 에 집중하는, 마치 자기계발서에 가까운 책이라고 할 수 있다. 클린 코드를 실제로 어떻게 쓰는지 궁금해서 이 책을 들었다면 생각보다는 유용하지 않을지도 모른다. 😥😥 하지만 개발자로서의 삶을 지속하려면, 자기계발이 숙명인 직업을 잘 유지하기 위한 방법이 궁금한 사람이라면 너무나도 추천하고 싶은 책이다. 

    특히 개발서적임에도 불구하고 '파레토의 법칙'과 '몰입'이라는 테마를 다룬 것이 인상적이었는데, 나의 친구😀 ChatGPT에 의하면 다음과 같이 설명할 수 있다. 심지어 파레토의 법칙은 경제학에서 다루는 이론인데, 다른 사회 현상이라던지 심지어는 프로그래밍에도 적용된다는 사실이 꽤나 흥미로웠다.

    몰입이라는 개념은 '몰입의 즐거움'이라는 책에서 나오는 개념이다.
    파레토의 법칙은 쉽게 얘기해서 80:20 법칙이라고 명명할 수 있다.
    혹시나 파레토의 법칙이 만물의 법칙처럼 만능으로 쓰일까? 궁금해서 물어봤더니 ChatGPT는 우문현답을 해주었다.

    덧붙여서, 역자님(?) 께서 3권의 책을 추천해주셨다. 위에서 언급된 '몰입의 즐거움(Flow: The Psychology of Optimal Experience)', 'EBS 자본주의', 그리고 마지막으로는... 기억이 나지 않는다고 하셨다. ㅋㅋㅋ 혹시라도 이 글을 보시게 되신다면 알려주시면 감사하겠습니다 !!

     


    예제 코드 주소

    역자가 직접 만들었다고 합니다.
    https://github.com/yudong80/art-clean-code


    책갈피

    클린코드 작성의 원칙
    1. 큰 그림을 생각하라
    2. 거인들의 어깨 위에 서라
    3. 기계가 아닌 사람을 위한 코드
    4. 올바른 이름을 사용하라
    5. 표준을 지키고 일관성을 유지하라
    6. 주석을 사용하라
    7. 불필요한 주석을 제거하라
    8. 놀람 최소화의 원칙
    9. 반복하지 않기
    10. 단일 책임 원칙
    11. 테스트
    12. 작은 것이 아름답다
    13. 디미터의 법칙
    14. 필요하지 않아요
    15. 과도한 들여쓰기 금지
    16. 지표를 사용하라
    17. 보이스카우트 법칙과 리팩터링



    성급한 최적화의 유형들
    – 코드 함수들을 최적화
      • 어떤 함수들이 얼마나 호출되는지 알기 전에는 최적화하면 안 됨
    – 기능들을 최적화
      • 반드시 필요하지 않은 기능들은 최대한 넣지 않으며 그것들을 최적화하는 데 시간을 낭비하면 안 됨
    – 확장성을 최적화
      • 첫 번째 고객을 응대하기 전에는 수백만의 사용자를 위한 확장성 설계는 피하세요
    – 테스트 설계를 최적화
      • 테스트를 너무 이르게 최적화하는 것은 시간 낭비의 요인
    – 객체 지향 세계로 최적화
      • 객체 지향적 접근법은 흔히 불필요한 복잡성을 만들고 성급한 “개념적” 최적화의 원인이 됨
        예) 복잡한 클래스들의 계층 구조

     

    성능 튜닝을 위한 6가지 팁
    1. 측정을 먼저, 개선은 다음
    2. 파레토가 왕 (80:20 법칙)
    3. 알고리즘 최적화가 최고
    4. 캐시 만세 (Memoization 기법)
    5. 적은 것이 더 많다 (Less is more)
    6. 멈춰야 할 때를 알기
      - 스스로에게 정기적으로 물어보기
        - 최적화를 계속하는 노력이 가치가 있는가?
        - 원래 버전과 최적화된 버전의 차이를 사용자가 인지할 수 있는가?

     

    몰입 (Flow)
    6가지 구성요소로 결정됨 - Attention, Action, Self, Control, Time, Reward

    • 삶을 훌륭하게 가꾸어주는 것은 행복감이 아니라 깊이 빠져드는 몰입이다
    • 몰입을 낳는 활동은 대부분 명확한 목표, 정확한 규칙, 신속한 피드백이라는 공통점을 갖는다
    • 여가 시간을 최대한으로 활용하려면 일을 할 때처럼 창의력을 발휘하고 정력을 쏟아야 한다. 과학과 예술이 전문화의 길을 들어서기 전까지만 하더라도 과학 연구, 시작, 그림 그리기와 작곡 등은 여가 활동으로서 이루어지는 경우가 많았다.

    반응형

    댓글

Written by Emily.