개발자 99% 커뮤니티에서 수다 떨어요!
오늘 TIL 3줄 요약
이 책을 읽는다는건 개발자로서 고행길에 들어선거다, 하지만 개발자로서의 삶은 평탄해지리!
좋은 코드의 핵심은 가독성!!
우리는 작성보다 읽는걸 더 많이한다 그러기에 좋은 코드를 짜야한다
TIL (Today I Learned) 날짜
2022.04.23
오늘 읽은 범위
추천사 ~ 1장.깨끗한 코드
책에서 기억하고 싶은 내용을 써보세요.
23p : "책임감 있는 전문가라면 프로젝트를 시작할 때 생각하고 계획할 시간을 확보해야 한다"
24p : 둘째, 꼭 맞게 닫히지 않는 문이나 삐뚤어진 바닥 타일이나 지저분한 책상 등 아주 사소한 것들이 전체의 매력을 깎아먹기 때문이다. 깨끗한 코드가 중요한 이유는 바로 여기에 있다.
24p : 소프트웨어는 80% 이상이 소위 “유지보수”다.
25p : 훌륭한 소프트웨어 기법은 집중, 침착, 사고라는 규율을 요구한다. 행동이 전부가 아니다.
25p : 5s ( 정리, 정돈, 청소, 청결, 생활화)
26p : 읽기 좋은 코드는 돌아가는 만큼이나 중요하다.
26p : 오늘 할 수 있는 일을 내일로 미루지 마라.
29p : 스스로 항상 나아지려고 노력할 뿐 아니라 (여러분이 손에 든 책과 같이) 자신들의 지식을 업계로 전달하려고 노력해온 전문가 팀이 내놓은 작품이니 당연하다.
33p : 장인 정신을 익히는 과정은 두 단계로 나뉜다. 바로 이론과 실천이다. 첫째, 장인에게 필요한 원칙, 패턴, 기법, 경험이라는 지식을 습득해야 한다. 둘째, 열심히 일하고 연습해 지식을 몸과 마음으로 체득해야 한다.
33p : 깨끗한 코드를 작성하는 방법은 배우기 어렵다. 단순히 원칙과 패턴을 안다고 깨끗한 코드가 나오지 않는다. 고생을 해야 한다. 스스로 연습하고 실패도 맛봐야 한다. 남들이 시도하다 실패하는 모습도 봐야 한다. 그들이 넘어지고 일어서는 모습도 봐야 한다. 결정을 내리느라 고민하는 모습, 잘못된 결정으로 대가를 치르는 모습도 봐야 한다.
34p : 이 책이 그저 “기분좋은책”으로 머물지 않기를 바란다. 손으로 몸으로 마음으로 익히기 바란다. 자전거 타는 법에 능숙해지면 자전거가 몸의 일부처럼 움직이듯이, 이 책을 철저히 익혀 자신의 일부처럼 활용하기 바란다.
37p : 헛소리! 앞으로 코드가 사라질 가망은 전혀 없다! 왜? 코드는 요구사항을 상세히 표현하는 수단이니까! 어느 수준에 이르면 코드의 도움 없이 요구사항을 상세하게 표현하기란 불가능하다. 추상화도 불가능하다. 정확히 명시하는 수밖에 없다. 기계가 실행할 정도로 상세하게 요구사항을 명시하는 작업, 바로 이것이 프로그래밍이다. 이렇게 명시한 결과가 바로 코드다.
39p : 나쁜 코드는 개발 속도를 크게 떨어뜨린다. 프로젝트 초반에는 번개처럼 나가다가 1-2년만에 굼뱅이처럼기어가는 팀도 많다.
41p : 질병과 감염의 위험은 환자보다 의사가 더 잘 아니까. 환자 말을 그대로 따르는 행동은 (범죄일 뿐만 아니라) 전문가답지 못하니까
42p : 진짜 전문가는 기한을 맞추려면 나쁜코드를 양상할 수빡에 없다는 말이 틀렸다는 사실을 잘 안다. 나쁜 코드를 양산하면 기한을 맞추지 못한다. 오히려 엉망진창인 상태로 인해 속도가 곧바로 늦어지고, 결국 기한을 놓친다. 기한을 맞추는 유일한 방법은, 그러니까 빨리 가는 유일한 방법은, 언제나 코드를 최대한 꺠끗하게 유지하는 습관이다.
44p : “의존성을 최대한 줄여야 유지보수가 쉬워진다. 오류는 명백한 전략에 의거해 철저히 처리한다. 성능을 최적으로 유지해야 사람들이 원칙 없는 최적화로 코드를 망치려는 유혹에 빠지지 않는다. 깨끗한 코드는 한 가지를 제대로 한다.” : C++창시자 비야네 스트롭스트룹
44p : 그들은 깨진 창문이라는 비유를 사용했다. 창문이 깨진 건물은 누구도 상관하지 않는다는 인상을 풍긴다. 그래서 사람들도 관심을 끊는다. 창문이 더 깨져도 상관하지 않는다. 마침내 자발적으로 창문을 깬다. 외벽에 그려진 낙서를 방치하고 차고에 쓰레기가 쌓여도 치우지 않는다. 일단 창문이 깨지고 나면 쇠퇴하는 과정이 시작된다.
45p : 나쁜 코드는 너무 많은 일을 하려 애쓰다가 의도가 뒤섞이고 목적이 흐려진다. 깨끗한 코드는 한가지에 ‘집중’한다. 각 함수와 클래스와 모듈은 주변 상황에 현혹되거나 오염되지 않은 채 한길만 걷는다.
45p : 깨끗한 코드는 단순하고 직접적이다. 꺠끗한 코드는 잘 쓴 문장처럼 읽힌다. 꺠끗한 코드는 결코 설계자의 의도를 숨기지 않는다. 오히려 명쾌한 추상화와 단순한 제어문으로 가득하다. : 그래디 부치
48p : 모든 테스트를 통과한다, 중복이 없다, 시스템 내 모든 설계 아이디어를 표현한다., 클래스 매서드 함수 등을 최대한 줄인다.
54p : 시간이 지날수록 코드가 좋아지는 프로젝트에서 작업한다고 상상해보라! 전문가라면 너무도 당연하지 않은가! 지속적인 개선이야말로 전문가 정신의 본질이 아니던가?
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
좋은 내용들이 너무나 많아서 좋았다, 특히 안좋은 코드를 짜는 상황에 대해 공감이 많이 갔는데 그것의 해결로 나는 디자인 패턴같은 구조를 신경쓰는것에 초점을 맞췄는데 결국 문제는 우리팀의 코드였다!
감탄할 만한 내용과 새롭게 느껴지는 내용이 많다, 그만큼 개발자지만 기초가 부실하다는 의미겠지. 노력하자 갭은 줄이면 되고 평탄해진 지반에 건물은 높게 올릴 수 있다.
궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
28p : “코드가 설계다”와 “단순한 코드”가 그들이 믿는 주민이다. 인터페이스가 프로그램이라는 사실, 그리고 인터페이스 구조가 프로그램 구조를 표현해야 한다는 사실도 신중하게 기억해야 하겠지만, 설계가 코드 속에 존재한다는 겸손한 자세도 지속적으로 받아들여야 한다.
34p : 휴리스틱
46p : 코드는 추축이 아니라 사실에 기반해야 한다. 반드시 필요한 내용만 담아야 한다. 코드를 읽는 사람에게 프로그래머가 단호하다는 인상을 줘야 한다.
48p : 좋은 코드란 클래스, 메서드, 함수 등을 최대한 줄인다.
오늘 읽은 다른사람의 TIL
nw4611 님의 TIL (https://nomadcoders.co/community/thread/4429)