새소식

Study/Books

[터닝포인트] 파이썬 클린 코드

  • -
728x90

 파이썬 클린 코드 리뷰

  • 스터디 기간: 2023.09 ~ 2023.12
  • 스터디 인원: 5명 (E, E, N, R, 중간하차 D 포함👀) 
  • 인증 방법: 각자 노션 페이지에 내용 정리

 안녕하세요, 주니어 데이터 사이언티스트 럼지입니다. 굳이 1판을 읽었던 이유는 2판의 e-book 이 아직이기 때문입니다..ㅠㅠ 사실 개정 여부보다는 번역의 퀄리티가 조금 더 중요한 문제였던 책입니다. 읽은 지는 좀 됐지만 꼭 읽었다는 티를 내고 싶은 책, 파이썬 클린 코드 책 리뷰를 시작합니다! 


 회사 팀원들과 한 주에 한 챕터씩, 길거나 어려워보이는 챕터는 2주를 잡고 총 3달간 스터디를 진행했다. 주 업무가 "개발"인 팀이 아니다 보니 코드 리뷰나 공유가 활발하게 이루어지지는 않는다. 그러나 개인의 역량을 성장시키기 위한 목적과, 서로 업무 관련한 소통을 할 때 같은 백그라운드를 가졌을 때의 장점을 위해 클린 코드 책을 읽기로 팀원들의 의견을 모아서 읽을 기회가 생겼다. 

 챕터를 지나면 지날수록 "두 번 세 번 읽어야 하는 책"이라는 생각이 들었다! 

개인 프로젝트든 업무든 코드를 짜다 보면, 처음부터 다른 사람과 협의를 하지 않는 이상 당장 눈 앞의 문제를 해결하기 위해 코드를 짜는 경우가 많다. 하지만 그 코드를 재사용하기 위해 다시 열어보고, 누군가에게 설명해 주고, 팀에 공유하거나 인수인계를 해줘야 할 때는 이만큼 곤란한 일이 없다. 시간이 그렇게 많이 지난 것도 아닌데 input 하는 데이터의 형식이 바뀌었다거나, 생각지 못한 예외가 발생해 "이 코드 에러 뜨는데 왜일까요?"라는 질문에 제 잘못입니다라고 밖에 대답할 수밖에 없는 현실.. 물론 책에서도 일회성으로 사용할 코드는 굳이 클린 코드 원칙을 지킬 필요는 없다고 말한다. 하지만 사람 일, 회사 일이라는 게 어디 한 번만 하자고 생각하면 한 번만 해도 되던가..? 

 아무튼 이 책은 비전공자 개발자 혹은 파이썬을 업무에 활용하는 직장인이라면 한 번 쯤 읽어볼 책으로 추천한다. 다른 언어와 다르게 파이썬만의 특징을 소개해주는 점도 어디 가서 아는 척하기 좋다고 생각했다(?). 꼭 이 책의 내용에서 얘기하는 직접적인 내용을 실무에 활용하는 것이 아니더라도 코드를 활용하는 내 능력에 도움이 된다고 생각한다. 내 경우에는 yolo 시리즈가 yolov5에서 ultralytics 패키지로 업그레이드되면서 생긴 코드의 추상화를 이해하는데 큰 도움이 됐다.

 챕터2까지는 그래도 파이썬을 활용해 이것저것 해본 사람이라면 쉽게 읽히는 내용이라고 생각하는데, 챕터 3부터는 파이썬을 활용해 개발 업무를 시작부터 배포까지 체계적으로 해본 사람들에게 도움이 될 것 같다다. 특히 챕터 8과 챕터 9는 언젠가 개발한 프로그램을 배포 경험을 쌓는다면 유용한 내용이었다. 

책의 장점

1. 예시 코드가 많다

 코드가 리팩토링되기 전/후를 실제 서비스에 사용될만한 예시를 들어서 설명해 줘서 이해하기에 좋았다. 실제로 서비스를 위한 개발 코드 자체를 볼 일이 많지 않기 때문에 책에서 소개하는 코드가 어떤 기능을 하고, 더 좋은 코드가 되기 위해 어떻게 수정되어야 하는지 보여줬기 때문에 초반에는 직접 따라 치며 내용 정리를 했었다. 코드를 읽었을 때 예상하는 동작과 실제로 동작하는 순서가 다른 코드는 다 같이 주피터 노트북에서 코드를 실행해보기도 했다. 열 번 읽는 것보다 한 번 실행하는 것이 훨씬 나은 듯. 

2. 누구도 알려주지 않지만 알아야 하는 내용들

 "파이썬의 함수 인자 동작방식", "함수의 signature", "테스트 주도 개발" 등 개발 업무를 할 때 한 번쯤 찾아봐야하는 개념들이 많이 언급된다. 일주일 혹은 이주에 한 번씩 챕터 리뷰를 할 때마다 내가 몰랐던 것, 혹은 아직까지도 이해 안 되는 것들을 공유할 때마다 나 혼자 모르는 것이 아니라는 안도감(?)과 함께 찾아봤던 개념들을 알게 되어서 다행이라는 생각이 들었다.

 코드의 주석이 무조건 있다고 좋은게 아니라든가, 에러를 처리하는 방식 혹은 except 문을 남발하면 나중에 더 큰 에러를 맞이할 수도 있다던가 하는 실무와 관련된 내용들이 있었고, 왜 매직 메서드의 앞뒤에는 _를 두 개씩 붙여야 하는지 등 "원래 그런 줄 알았던" 사소한 문법들에 관해서도 설명을 해주는 부분들도 있었다. 검색해 볼 수 있는 내용이지만, 어떻게 검색해야 하는지조차 몰라서 찾아보지 못했던 부분들이었다. 요새는 챗gpt가 해결해 줄 수 있는 문제 중에 하나지만 어떤 맥락에서 사용되는지 예시와 함께 이해하기에 좋은 내용들이었다.

책의 단점

1. 번역.. 번역.. 번역

사전 (dict), 응집력 (cohesion) 등 영어로 써야 조금 더 쉽게 이해될만한 단어들이 모조리 한국어로 직역되어있어서 무슨 뜻이지? 싶었던 적이 많다. 물론 실제로 사용되는 용어일 수도 있겠지만 polymorphsim 같은 건 그냥 외래어처럼 읽는 게 독자들에게도 좋고 나중에 영어 document를 읽을 학생들에게도 좋지 않을까 하는 개인적인 견해가 생긴다. 가짜연구소 스터디에서 연이 닿았던 업계 선배가 통계학 관련 용어는 굳이 한국어로 공부하지 말고 영어로 공부하는 것을 추천하셨던 적이 있었다. 꼭 통계학에 국한되는 이야기는 아니었던 것 같다.

 문장이 한 번에 이해하기 어려운 번역투가 있어서 원문을 여러 번 찾아봐야했던 시간들도 있었다. 내가 두 버전을 잘 비교한 게 맞다면, 중간에 책의 흐름을 자연스럽게 만드는 문단의 번역이 누락되어 있기도 했다. 기술과 관련된 책이라 이해 가능한 부분이었지만 나는 정보를 기억할 때 맥락이 있으면 잘 외우는 편이었기 때문에 조금은 아쉬웠다. 

2. 내 배경 지식

 이건 책의 단점보다는 이 책을 읽는 나의 부족함이라고 표현하는게 더 맞겠다. 스스로 기초가 탄탄하다고 생각하지는 않았지만 이 책에서 독자가 이해할 것이라고 기대하는 개념들과 비교하면 차이가 꽤 있다고 느꼈다. 딥러닝이나 머신러닝 관련해서 사용자와의 interaction이 있는 코드를 개발하는 것은 아니다 보니 서비스와 관련된 내용에 대해서는 이해가 바로바로 되지는 않았다. 이 부분은 따로 내가 앱 개발 같은 개인 프로젝트를 하다 보면 더 이해가 잘 될 것 같다고 생각했다.  


 책을 꼭 처음부터 끝까지 완독하지 않고, 목차를 보고 본인에게 필요한 챕터만 읽더라도 도움이 크게 될 책이라고 생각한다. 혹시나 읽기를 미루고 계셨던 분이라면 꼭 읽어보길 추천하고 싶다 💪

(부록 겸 기록) 나중에 다시 볼 키워드

더보기

- 데코레이터

- 디스크립터
- 코루틴
- 비동기 프로그래밍
- 매직 메서드

 

728x90

'Study > Books' 카테고리의 다른 글

[길벗] 커리어 스킬 / 존 손메즈  (0) 2024.07.29
[한빛미디어] 밑바닥부터 시작하는 딥러닝3  (0) 2023.08.12
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.