삽질의 현장/- Go

Practical Go - Package Design

shovelman 2020. 12. 20. 21:57

각 Go 패키지는 사실상 자체 소규모 Go 프로그램이다. 좋은 Go 패키지는 프로젝트가 성장함에 따라 하나의 패키지에 대한 변경 사항이 코드 기반 전체에 걸쳐 적용되지 않도록 낮은 수준의 커플링을 갖도록 노력해야 한다.

A good package starts with its name

좋은 패키지는 이름으로 시작된다.

패키지 이름은 한 단어로 설명하는 엘리베이터 피치라고 생각하면 된다.

패키지에 포함된 내용이 아니라 제공하는 내용에 대한 이름을 지정해야 한다.

Good package names should be unique.

좋은 패키지 이름은 고유해야 한다.

유틸리티 패키지 네이밍은 피해라.

약간의 duplication은 잘못된 추상화보다 괜찮다.

유틸리티 패키지의 이름을 지정하려면 복수형을 사용해라.

식별자 이름에는 패키지 이름이 포함된다는 점을 기억하라.

Return early rather than nesting deeply

Make the zero value useful

structs에 유용한 0값을 제공하라

명시적인 초기화가 제공되지 않는다는 가정하에 모든 변수 선언은 자동으로 초기화된 메모리의 내용과 일치하는 값으로 초기화된다.

항상 값을 알려진 기본값으로 설정하는 이 속성은 프로그램의 안전성과 정확성에 중요하다. Go 프로그램을 더 간단하고 간결하게 만들 수 있다.

Avoid package level state

Go에서 느슨한 결합을 달성하는 두가지 방법이 있다.

인터페이스를 사용하여 함수 또는 메서드에 필요한 동작을 설명한다.

전역 상태를 사용하지 않는다.

전역 변수가 생성하는 결합을 줄이려면

관련 변수를 필요한 구조체의 필드로 이동한다.

인터페이스를 사용하여 동작과 해당 동작의 구현 간의 결합을 줄인다.

 

출처 : Practical Go: Real world advice for writing maintainable Go programs

'삽질의 현장 > - Go' 카테고리의 다른 글

Practical Go - API Design  (0) 2020.12.20
Practical Go - Project Structure  (0) 2020.12.20
Practical Go - Comment  (0) 2020.12.20
Practical Go - Identifiers  (0) 2020.12.20
Practical Go - Principles underlying Go itself  (0) 2020.12.20