GN⁺ 2025-04-24 | parent | ★ favorite | on: Go의 Layered 설계 방식(jerf.org)
Hacker News 의견
  • 순환 종속성을 허용하지 않는 것은 대규모 프로그램을 구축할 때 훌륭한 설계 선택임

    • 이는 관심사를 적절히 분리하도록 강제함
    • 순환 종속성이 발생하면 설계에 문제가 있는 것이며, 기사는 이를 해결하는 방법을 잘 설명함
    • 가끔 다른 패키지가 재정의하는 함수 포인터를 사용하여 순환 종속성을 해결함
    • Go 컴파일러가 순환 종속성을 만들 때 더 유용한 출력을 제공했으면 좋겠음
    • 현재는 루프에 관련된 모든 패키지 목록을 제공하는데, 이는 꽤 길 수 있으며 일반적으로 문제를 일으킨 것은 마지막으로 변경한 것임
  • 훌륭한 블로그 게시물임

    • 이 웹사이트에는 놀라운 게시물이 많으며, 함수형 프로그래밍에 대해 배우는 것을 좋아한다면 확인해보길 권장함
    • 링크
  • "세 번째 패키지로 이동" 조언과 관련된 보너스 기술

    • 많은 모델 구조(SQL, Protobuf, GraphQL 등)를 생성하면 생성된 계층 간의 명확한 방향성을 설정할 수 있음
    • 모든 생성된 코드를 애플리케이션 코드에 "기본 패키지"로 제공하여 모든 것을 함께 구성함
    • 이 기술 도입 전에는 "모델이 모델을 순환적으로 가져오는" 문제가 있었지만, 구조적 추가 계층 도입으로 완전히 사라짐
  • Yourdon 구조적 방법에 관한 책을 읽고 있는 것 같음

  • 패키지가 서로 순환 참조할 수 없음

    • 실제로 Go에서는 go:linkname을 사용하여 가능함
  • 랜덤라이저의 구체 개념을 떠올리게 함

  • Golang의 재미있는 특징은 패키지 수준에서 순환 종속성을 가질 수 없지만, go.mod에서는 가질 수 있음

    • 요약하자면, 그것도 하지 말아야 함
  • Jerf가 패키지를 어떻게 생각하고 순환 종속성을 어떻게 처리하는지에 대한 멋진 설명임