클린코드/리팩터링/TDD 감상문

mosad2334·2022년 1월 14일
0

서론

  • 1차적으로 습득한다는 생각으로 전체적으로 훑어서 빠른 내용 습득이 목표
    • 우선 이해한 만큼 사용해보면서 다시 내용 확인이 필요하다고 생각할 때마다 2차, 3차 이상 읽으면 언젠간 마스터 하겠지 라는 생각
  • 최대한 이해하고 넘기고, 이해가 너무 오래걸리면 패스함
    • 왜 필요한지 모르겠거나 해당하는 케이스가 생각나지 않을 때가 대부분
  • 흥미가 떨어질 것 같으면 과목을 바꿔서 읽었음

클린코드 - 로버트 C. 마틴

  • 문장이 클린코드마냥 유려하게 읽혔음
    • 글을 잘 쓰면 코드도 잘쓰는 듯
  • 내가 아는 코드들이 추상적인 논리를 그대로 표현하는 방식이었다면 마치 이야기를 해주는 듯이 코드를 작성하는 것 같다는 느낌을 받았음
  • 2장 의미있게 구분해라 부분에서 a, an, the 언급한 부분
    • 의미가 분명히 다르다면 사용해도 무방하다곤 했는데 리팩터링 2판에서 a를 매우 잘 쓰고있어서(aPerson, aChair..) 작성된 예시에서 걸리는 경우가 있을까봐 리팩터링 읽으면서 자꾸 집중하게됨
  • 큰 목차를 세 개 정도 남겨두었을 때 표지의 얼룩의 의미를 알게 됨
    • 클린코드인데 왜 더러운 얼룩을 표지로 했지? 보통 빗자루 같은 그림을 생각하지 않나? 라고 생각
    • 마지막 목차에 모든 얼룩이 깨끗해 진 걸 보고 오 아이디어.. 하고 생각(이것도 스포라고 칠 수 있나)
  • 필요할 때 보려고 클린코드 치트시트를 무조건 작성하고 싶었는데
    • 1장 깨끗한 코드부터 7장 에러처리까지 치트시트로 작성할지
    • 17장 냄새와 휴리스틱 내용을 위주로 치트시트를 작성할지 고민
    • 둘 다 해도 되긴 하겠지만 어차피 일부는 중복되는 내용일텐데
    • 이건 자고 일어나서 생각
  • 클린코드로 작명 실력을 길러서 은퇴하면 작명소 차려도 되겠다고 생각함
  • 거의 모든 상황에 대한 클린코드를 제시해 준 것 같다고 생각함
    • 이 생각은 내가 봐도 쪼렙이라 뭘 몰라서 할 수 있는 소리 같긴 함
    • 아무튼 그만큼 굉장히 다양한 상황에 대해서 말해줌
      • 클래스와 시스템, 동시성에 대한 내용은 알고 싶던 내용이었음(아직 완벽한 습득은 못했지만)

리팩터링 2판 - 마틴 파울러

  • 1장 시작부터 흐린 눈으로 봤음
    • 나중에 설명되는 리팩터링 기법들의 용어로 쭈욱 길게 설명
      • 모르는 용어로 일단 플롯을 조지고 시작하니 잘 들어오진 않았음
    • 일단 그냥 흐름에 맡겨 쭉 코드 변경이 어떻게 되는지 지켜봄
    • 다 읽고나서 한번 더 읽어야 될 부분일 듯 잠깐 다시 읽고 오겠음
    • 오케이
  • 스위치 구문을 이렇게 증오스러워 하는 지 몰랐음
  • 자동 리팩터링 도구 궁금함
  • 리팩터링 != 성능최적화 라는 사실이 인상깊음
  • 지속적인 생산 속도를 유지하기 위해 필요하다는 사실이 인상깊음
  • 다른 웹 프레임워크 환경과 웹 프레임워크가 아닌 환경에서 각각 대체 어떤 식으로 리팩터링하는 코드의 파일들을 관리를 하는지가 제일 궁금함
  • 리팩터링 기법을 하나씩 설명하기 시작하는 6장 부터
    • 기법을 간단하게 표현하는 도형
    • 리팩터링 전, 후 코드
    • 기법의 배경 설명에서 나타나는 리팩터링 필요이유
    • 요 세 개만 습득하고 절차와 절차 그대로 구현하는 예시는 이해하면서 읽기에는 너무 시간이 많이 걸려서 패스
  • 11장 API 리팩터링에서 리팩터링 전 코드들에서 이상한데 익숙한 코드들이 많이 보이는 것이 신기했음
  • 아직 적재적소를 판단하기 힘듬

Test-Driven Development : By Example - 켄트 백

  • 충격과 공포였음
    • 이걸 이렇게 까지 한다고?
    • TDD 도입한 회사 다니는 신입 개발자 친구한테 그대로 물어봄
      • 하이브리드로 해서 다는 하진 않는다고 하는데 그럼 테스트 주도라고 할 수 없는 것 아닌가..
  • 일단 보긴 했는데 감이 안잡힘
    • 그냥 빨리 직접 작성 시작해야 잡힐 것 같음
  • 채팅 프로그램의 경우 대체 어떻게 시작해야 하지?
    • 서버와 클라이언트가 나뉘고, 두 개의 다른 프로그램이 서로 통신하는 이 경우는 보통 어떻게 처리하지?
      • 어떻게 처리할까?
    • 그리고 클라이언트는 서버에서 메세지를 듣고 있는 스레드와 메세지를 입력해야 하는 스레드 하나가 계속 돌아가고 있는 구조여야 하는데 이런 상황에서 테스트 코드는 어떻게 작성하지?
  • 빨리 해보고 싶음
    • 프로그램이 엉킬까봐 불안해하는 마음 없이 엄청나게 폭주하면서 키보드 갈길 수 있을 것 같은 환상이 생김
  • 클린코드와 리팩터링 2판에서 모두 켄트 백을 언급하는 부분이 인상깊음

결론

  • 무슨 생각으로 월요일부터 이 세 과목 공부랑 다른 과목 두세 개에 토이프로젝트 제일 간단한 것으로 완성할 수 있다고 생각했지 나자신?
    • 무슨 자신감이었던 걸까?
    • 제일 적은 쪽수의 책이 380쪽이었다
  • 지금까지 썼던 생각정리용 포스팅들이 마치 그냥 마구잡이로 쓴 코드같아서 포스팅을 리팩터링 해야겠단 생각이 들었음
  • 세 권 모두 서로 중복되는 부분의 내용이 상당부분 있었음
    • 동시에 세 권을 훑어볼 수 있어서 다행인듯
profile
Web Developer / Read "KEEP CALM CARRY ON" Poster

0개의 댓글