일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 디자인패턴
- 배포 프로세스
- 대규모 시스템 설계
- 윈도우키보드
- GoF
- 코사인 유사성 메트릭스
- intellij ide
- Buffered channel
- Intellij
- notification system
- AWS
- gitops
- UnBuffered channel
- golang
- http 413
- cosine similarity metric
- 배포 파이프라인
- body size
- Infra
- apollo router
- Logrus
- 사설 ip
- go
- 티스토리챌린지
- kube-prometheus-stack
- m4 pro
- goland
- elasticsearch
- 오블완
- Kubernetes
Archives
- Today
- Total
Fall in IT.
(Golang) 캡슐화에 대하여 간단 정리 본문
반응형
안녕하세요.
오늘은 캡슐화에 대해서 아주 간단하게 정리해보겠습니다.
캡슐화
# Date 구조체의 필드값을 모두 퍼블릭으로 선언
type Date struct {
Year int
Month int
Day int
}
# Date 구조체의 필드값을 모두 프라이빗으로 선언
type Date struct {
year int
month int
day int
}
구조체의 필드값을 퍼블릭으로 선언하지 않고 프라이빗으로 선언하는게 왜 중요할까?
year, month, day에는 값의 범위가 정해져 있는데 가령, month는 1이상이고 12이하여야한다. year, day도 마찬가지로 범위가 존재한다.
이때, 상세 필드값을 퍼블릭으로 열어주게 되면 값을 설정할때 적절한 유효성 검사를 할 수 없게 된다.
조금 더 구체적으로 얘기해보면,
구조체의 필드를 프라이빗으로 선언하는것이 중요한 이유는
- 데이터 보호
프라이빗 필드는 구조체 외부에서 직접 접근할 수 없으므로 외부에서 예기치 않은 방식으로 데이터가 변경되는 것을 방지할 수 있다. - 인터페이스와 구현의 분리
사용자는 구조체의 메서드를 통해서만 데이터에 접근할 수 있으므로 구조체의 내부 구현을 변경하더라도 사용자에게 영향을 미치지 않는다. 이는 유지보수와 확장성을 향상 시킨다. - 제어된 데이터 접근
개발자는 메서드를 통해 데이터 접근을 제어할 수 있다. 예를들어, 특정 조건을 만족할 때만 데이터를 수정하도록 할 수 있으며 데이터 유효성 검사를 적용할 수 있다 - 추상화 수준의 향상
구조체의 사용자는 구현 세부 사항보다는 구조체가 제공하는 기능에 집중할 수 있다. 이는 코드 가독성과 이해도를 높여준다.
캡슐화는 객체 지향 프로그래밍의 핵심 원칙 중 하나로 객체의 상세 구현 내용을 숨기고 사용자에게는 필요한 인터페이스만 제공하는 것을 의미한다. 이를 통해 유연하고 확장성이 높은 코드를 유지할 수 있다.
반응형
'프로그래밍언어 > Golang' 카테고리의 다른 글
[Go] 고루틴과 채널을 활용한 이벤트 처리 시스템 (0) | 2024.03.19 |
---|---|
Go 로깅라이브러리 Logrus Hook에 대하여 (0) | 2024.03.03 |
Go언어 Golines을 사용해서 보기좋게 포맷팅하기 (0) | 2023.02.16 |
Golang Singleton Pattern 간단하게 알아보기 (0) | 2022.06.15 |
Go 1.18버전부터 추가 된 generic 사용해보기 (0) | 2022.05.02 |
Comments