자기계발/독서

[독서] 육각형 개발자 4~7부

KimCookieYa 2024. 4. 13. 00:56

육각형 개발자 - 4부

일시: 2024-04-11 15:30 ~ 16:10
목차: 4부

  • 읽고 든 생각
    • 리팩토링과 테스트는 빠른 구현을 해야하는 스타트업에서는 맞지 않는 느낌인가?
    • 4장: 코드 시각화 - 미로에서 프로세스를 시각화하는 것과 같은건가?
    • 113p: "응집도가 높아지면 구성요소가 역할에 따라 알맞게 분리될 가능성이 커진다." 반대 아닌가?
    • 리팩토링: 인턴이라 그런가, 기존 로직을 함부로 리팩토링하기가 걱정이 되긴 한다. 함부로 고쳤다가 문제가 생길까봐.
    • 프론트에서의 테스트는 어떤 것이 있을까? 운송 예약의 경우라면, 입력을 자동으로 넣고 예약이 됐는지 안됐는지를 테스트하면 될까?4부 - 코드이해
  • 같은 용어를 사용했지만 서로 이해하는 바가 달랐다. => 우리들은 이런 상황에서 어떻게 하는가? 각자 어떤 방식을 사용하지?
    • 빅터: 용어에 대한 정확한 합의
    • 쿠키: 대화하다가 맞지 않는 부분이 있으면 바로 맞추고자 솔직하게 이야기함. 또한 이야기하는 바를 계속해서 기록하고 그림으로 그리면서 서로 머릿속에 그려지고 있는 바가 같은지를 확인한다.
    • 민: 잘 들어야한다. 내가 말하는 것만 생각하면 상대방의 이야기를 듣는 것보다 내 중심으로 생각하게 된다.
    • 하나의 문맥으로 모든 사람을 이해시키는건 불가능하다.
    • 그렇다면 하나의 문맥으로 다른 사람을 이해시키는건 불가능하다는 것을 인정해야한다.
    • 공유된 이해(Shared Understanding): 똑같은 말일지라도 다 다르게 이해한다.
    • 어떤 문맥을 통일하거나 강요해선 안된다. 커뮤니케이션을 통해 해결해야한다. 자신이 이해한 바를 서로 공유해야한다.
  • 코드를 잘 짜는 개발자란 뭘까?
    • 코드를 글로 비유할 수 있다.
    • 코드는 문체, 문장
    • 로직, 알고리즘은 내용
    • 글을 잘 쓰는 사람이란 문체/문장 또는 내용
    • 디자인패턴은 개발자 본인의 생산성에 가깝다. 전세계 공통으로 좋다고 하는 디자인 패턴을 사용하면 본인이나 누군가가 이해하기 쉽다는 장점이 있다.
  • 내 코드의 최우선 고객은 미래의 나다.

육각형 개발자 - 5부

일시: 2024-04-12 14:20
목차: 5부 ~ 7부

5부: 응집도

  • 응집도와 결합도는 트레이드오프가 있을 수 밖에 없다.
  • 누구도 답을 낼 수 없다.
  • 응집도의 단점
    • 응집도가 너무 커지면 하나씩 꺼내기가 힘들다.
    • 집합별로 응집도가 다르다. 하나의 응집도가 너무 크면 다른 응집도가 낮아진다.
  • 상속보다는 조립 원칙
    • 자바는 상속
    • 타입스크립트는 조립
    • 부모 클래스의 모든 기능을 자식 클래스에 다 쓰는 일이 별로 없다.
    • 그래서 상속을 하면 결합도가 쓸데없이 너무 높아진다.
  • 그래도 상속이 좋은 이유
    • 자식 클래스에게 구현(오버라이딩)해야하는 기능을 강제할 수 있다. 조립은 구현을 강제할 수 없다.

6부: 리팩토링

  • 리팩토링 === 방청소
  • 제품은 날이 갈수록 복잡도가 올라간다.
  • 복잡도가 높아진 제품에 기능을 추가하려면 엄청난 리소스, 인적자원이 소모된다.
  • 대신 그렇다고 모든 코드에 리팩토링이 필요한건 아니다.
  • 상황을 보고 생각해야한다.
  • 리팩토링은 언제 해야할까?
    • 방청소는 매일, 평소에 자주 해야한다.
    • 리팩토링도 그냥 항상 하고 있어야 한다.
    • 능력없는 개발자일수록 중요한 개발 전에 리팩토링해야한다는 밈이있다.
  • 리팩토링에 테스트가 필수인가
    • 요즘은 ide가 기본적으로 작은 리팩토링을 지원해주는게 있다.

7부: 테스트

  • 학생한테 테스트는 필요없다.
  • 코드 1만줄부터 고민해볼만하고, 10만줄부터는 필수이다.
  • 컴포지션 테스트만으론 어렵다. 컴포지션 테스트하려면 모든 테스트를 고려하는 수 밖에 없다.
  • 유닛테스트
  • 리액트도 규모가 커지면 대규모 ui 테스트(유닛테스트)는 해야한다. 특히 결제/회원가입
  • 그래도 주니어가 손댈 필요는 없다. 재미도 없다.
  • 진짜 대규모 프로덕트에나 필요하다.