Community

개발자 99% 커뮤니티에서 수다 떨어요!

← Go back
TIL-1 Assignment #02 (2022.02.19[토])
by leeq
#clean_code
2년 전
2,854


TIL (Today I Learned)

2022.02.19

오늘 읽은 범위

추천사 ~ 1장. 깨끗한 코드

책에서 기억하고 싶은 내용을 써보세요.

  • 나쁜 코드가 쌓일수록 팀 생산성은 떨어진다. -중략- 마침내 팀이 반기를 든다. 그들은 이처럼 혐오스러운 코드로는 더 이상 일하지 못하겠다며 관리층에게 재설계를 요구한다. -중략- 새 시스템이 기존 시스템을 따라 잡을 즈음이면 타이거 팀원들은 모두 팀을 떠났고 새로운 팀원들이 새 시스템을 설계하자고 나선다. 왜? 현재 시스템이 너무 엉망이라서. (p.5-6)

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

  • 깨끗한 코드는 작성자가 아닌 사람도 읽기 쉽고 고치기 쉽다. (p.11)

  • 중복을 피하라. 한 기능만 수행해라. 제대로 표현하라. 작게 추상화하라. 이상이다. (p.14)

  • 잘 짠 코드가 전부는 아니다. 시간이 지나도 언제나 깨끗하게 유지해야 한다. (p.18)

오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요

클린 코드. 깨끗한 코드란 무엇인가? 이는 나에게 아직도 예술이나 정의와 같이 모호한 개념이다. 읽기 쉽고 작동 방식이 예상 가능한 코드는 깨끗한 코드인가? 그렇다면 매 라인마다 주석이 주렁주렁 달린 코드도 깨끗한 코드인가? 정리가 잘 된 코드는 깨끗한 코드인가? 애초에 정리가 잘 되었다는 개념은 무엇인가? 예를 들어, 함수는 작용하는 코드 근처에서 선언하는 것보다 함수들끼리 모아서 선언하는 것이 더 정리된 것인가? 클린 코드란 내게 이렇게 모호한 개념임에도 불구하고, 나름의 규칙과 철학을 가지고 클린 코드를 작성하기 위해 노력하고 있다. 어쩌면 실천이라는 말이 더 어울릴 지도 모르겠다. 전공이 산업공학이라, 추천사의 Lean Production System에 대한 언급은 반가웠다. 내가 코딩을 하며 항상 효율을 찾고, 효율을 달성하기 위해 정리, 정돈, 청소, 청결을 하며 돌아가는 길을 선택하는 것은 필히 전공의 영향이리라.

책의 1장을 막 읽은 참이지만, 불안감부터 엄습해오는 것은 사실이다. 이 책도 마이클 샌델의 "정의란 무엇인가"라는 책처럼 사례와 견해들만 줄곧 나열하다 클린 코드에 대한 정의를 우리에게 떠넘기진 않을까? 아마 그럴 것이다. 모호한 개념이란 그런 것이니까. 하지만 그 와중에도 나름의 철학은 있어야 하며, 보다 많은 사람이 납득 가능한 해답을 찾아나가야 한다. 개선하려는 노력이 없다면 상황은 현상 유지조차 불가능하다. 점점 악화될 뿐이다. 그렇기 때문에 1장에서 여러 유명 프로그래머들의 발언을 인용한 것은 좋다고 생각한다. 데이터가 많을 수록 해답에 점점 가까워질 테니까. 그것도 업계의 대부 쯤 되는 사람들의 데이터가.

개인적인 견해로는, 클린 코드를 고민하는 사람들은 진짜 문제가 아니라고 생각한다. 문제는 그에 대한 고민조차 하지 않고 마치 밀린 방학 숙제의 일기를 쓰듯이 코드를 내뱉는 사람들이다. 아이러니하게도, 이 책을 읽겠다고 생각한 사람은 정말로 이 책이 필요한 사람들이 아니라는 것이다. 업체들과 협업을 진행하며, 심지어는 동료와 협업을 진행하면서도 이와 같은 사람들을 많이 만나보았다. 언어의 기본적인 Naming convention이나 Indent조차 지키지 않는 사람들도 있었다. 그런 경우에는 작은 기능을 하나 추가하거나 간단한 버그를 하나 수정하는 데에도, 로직을 이해하거나 직관적인 구조로 변경하는 데에 대부분의 시간을 쏟아 붇는다. 하지만 그들은 그들의 코드에 문제가 있다는 사실조차 인식하지 못한다. 왜냐하면 그들 뒤에 대신 고생하는 사람들이 있으니까. 코드 좀 더럽게 짠다고 해서 작동하지 않는 것도 아닌데, 왜 정리정돈에 시간을 소비해야 하냐는 마음가짐이 있을 수도 있다. 하지만 우리는 명심해야 한다. 슈퍼맨이 아니라면, 혼자서는 세상을 구할 수 없다.

협업은 다른 사람과의 협업만을 의미하는 것이 아니다. 모든 프로그래머는 과거의 자신과 협업을 반복한다. 과거의 내가 짠 더티 코드로 고생해본 경험이 있는가? 클린 코드에 대해 지대한 고민을 하는 나도 가끔은 세상의 모든 굴레를 던져버리고 더러운 코드를 내뱉어버리는 경우가 있다. 반대로, 효율적인 코드를 (성능적으로든, 가독성으로든) 위해 너무 많은 시간을 허비하는 것은 아닐지 걱정되기도 한다. 그렇기 때문에 이 책을 선택했다. 이 책을 읽고 나면 모호했던 개념이 조금이나마 더 구체화되고, 더 잘 실천할 수 있을 것이란 막연한 기대로. 이 책의 서문에서는 배우기 어려울 것이라고 잔뜩 겁을 주던데, 부디 그러길 바란다. 명쾌하고 간단한 해결법을 바라고 이 책을 읽는 것이 아니니까. 소감을 가볍게 적으라고 명시되어 있지만 평소의 울분이 터져서인지 길어지게 되었다. 클린하지 못하다. 오늘보다 내일의 코드가 더 낫기를 기원하며, 이 책의 나머지를 읽어나가겠다.

궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.

  • PPP는 아직 읽어보지 않았기 때문에, 이 책을 읽은 후에 읽어보도록 하겠다.