📌 1 주차 토 | Assignment #02 - 📖 추천사 ~ 1장. 깨끗한 코드 - 📝 TIL
💡 TIL (Today I Learned)
2022.02.19.토
📖 오늘 읽은 범위
추천사 ~ 1장. 깨끗한 코드
✔책에서 기억하고 싶은 내용을 써보세요.
우리 개발자들에게는 체크아웃해 코드를 꺼낼 때보다 체크인해서 코드를 넣을 때 더 깨끗한 상태로 만들어야 할 의무가 있다. - 2010년 번역판 옮긴이 서문 xxi
하지만 이 책을 읽다 보면 오래 전에 저버린 규율이나 즉흥적으로 그저 "변경에 대응하겠다"는 욕구를 돌아보게 되리라 믿는다. - 추천사 xxvi
깨끗한 코드를 작성하는 방법은 배우기 어렵다. 단순히 원칙과 패턴을 안다고 깨끗한 코드가 나오지 않는다. 고생을 해야 한다. - 들어가면서 xxxii
궁극적으로 코드는 요구사항을 표현하는 언어라는 사실을 명심한다. - p.3
우리 모두는 대충 짠 프로그램이 돌아간다는 사실에 안도감을 느끼며 그래도 안 돌아가는 프로그램보다 돌아가는 쓰레기가 좋다고 스스로를 위로한 경험이 있다. ... 나중은 결코 오지 않는다. - p.4
매번 얽히고설킨 코드를 '해독'해서 얽히고 설킨 코드를 더한다. 시간이 지나면 쓰레기 더미는 점점 높아지고 깊어지고 커진다. 청소할 방법이 없다. - p.5
좋은 코드를 사수하는 일은 바로 우리 프로그래머들의 책임이다. ... 기한을 맞추는 유일한 방법은, 그러니깐 빨리 가는 유일한 방법은, 언제나 코드를 최대한 깨끗하게 유지하는 습관이다. - p.7
나쁜 코드는 너무 많을 일을 하려 애쓰다가 의도가 뒤섞이고 목적이 흐려진다. 깨끗한 코드는 한가지 '집중'한다. 각 함수와 클래스와 모듈은 주변 상황에 현혹되거나 오염되지 않은 채 한길만 걷는다. - p.10
깨끗한 코드는 언제나 누군가 주의 깊게 짰다는 느낌을 준다. 고치려고 살펴봐도 딱히 손 댈 곳이 없다. - p.12
객체가 여러 기능을 수행한다면 여러 객체로 나눈다. 메서드가 여러 기능을 수행한다면 메서드 추출 리팩터링 기법을 적용해 기능을 명확히 기술하는 메서드 하나와 기능을 실제로 수행하는 메서드 여러 개로 나눈다. - p.14
중복 줄이기, 표현력 높이기, 초반부터 간단한 추상화 고려하기, 내게는 이 세가지가 깨끗한 코드를 만드는 비결이다. - p.14
새 코드를 짜면서 우리는 끊임없이 기존 코드를 읽는다. ... 하지만 기존 코드를 읽어야 새 코드를 짜므로 읽기 쉽게 만들면 사실은 짜기도 쉬워진다. - p.18
변수 이름 하나를 개선하고, 조금 긴 함수 하나를 분할하고, 약간의 중복을 제거하고, 복잡한 if문 하나를 정리하면 충분하다. - p.19
📝오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
비전공자로써 개발 일을 시작한 지 얼마 되지 않은 나로서는 개발에 대해서 궁금한 점이 많았다. 코드에 대한 리뷰가 두려워서 남에게 코드를 보여주는 일에 선뜻 나서지 못하고 코드를 꽁꽁 숨겨만 왔다. 그래서인지 책에서의 글자들이 직접 훈계해주는 느낌이 들었다. 회사에 다니면서 각 사람의 코드를 보고 또 짜여진 코드들을 확인하고 코드를 추가하면서 느꼈던 부분들이 책에 잘 묘사되어 있었다. 기한에 맞추기 위해서라는 핑계로 돌아만 가는 코드를 만들고 오류를 만나 만든 코드들을 다시 해독하고 설킨 코드를 더하는 일들을 반복하게 되었다라는 문구에서 이 정도면 누군가가 나를 관찰하고 있는 것이 아닌가라는 의심이 들었다. 하지만, 책에 나올 정도로 모두가 겪고 있는 일이라는 것에 대해서 조금은 안도감도 들었다. 또한 알고리즘 스터디를 하면서 책에 나왔던 코드들이 왜 이렇게 짧은 기능들을 메서드로 나누어서 구현했을까 하는 의문에 시니어분이 실제로 이렇게 각 기능마다 나눠서 짜는 일이 많다고 했던 얘기를 책에서 다시 접하게 되니, 내가 한 번에 실행되게 주먹구구로 욱여넣은 코드들이 얼마나 쓰레기 같은 코드였는지 느껴졌다. 오늘 읽은 소감은 쓰레기 코드가 아닌 깨끗한 코드를 위해 한 발자국 나아갈 수 있는 원동력이 되었다라고 정의할 수 있다.
🔎 궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
TPM의 5S 원칙
1) 정리 - 필요를 구분하는 것 2) 정돈 - 언제든지 필요할 때 사용할 수 있도록 정렬 3) 청소 - 더러움이 없는 상태로 만드는 것 4) 청결 - 정리, 정돈, 청소의 활동을 표준화하는 것 5) 생활화 - 정해진 일을 올바르게 지키는 습관을 생활화하는 것
미스 반 데어 로에의 문 손잡이
"건축의 디테일에 신이 있다." 문손잡이와 같은 디테일 속에 건축의 미가 담겨야하고 디테일을 통해 자신의 건축 이념을 드러낼 수 있어야 한다는 뜻
휴리스틱(heu-ristic)
어림잡아 짐작하는 것 불충분한 시간이나 정보로 인하여 합리적인 판단을 할 수 없거나, 체계적이면서 합리적인 판단이 굳이 필요하지 않은 상황에서 사람들이 빠르게 사용할 수 있게 보다 용이하게 구성된 간편추론의 방법 by 위키백과
데이브 토마스와 앤디 헌트의 깨진 창문
깨진 유리창을 오랫동안 수리하지않으면, 방치된 건물이라고 여겨져 계속해서 훼손된다는 깨진 창문 이론은 개발자 관점에서 깨진 유리창 = 잘못된 코드 로 해석됨