인프런 커뮤니티 질문&답변

wnsqud70님의 프로필 이미지
wnsqud70

작성한 질문수

Readable Code: 읽기 좋은 코드를 작성하는 사고법

사고의 depth 줄이기

static

작성

·

69

0

안녕하세요 강사님

그 매직넘버와, 매직스트링 강의와 이 강의를 들으면서 하나 느낀점이 있는데 상수로서 정리를하여 얻는 이득은 있으나 그만큼 static이 많아져서 메모리를 더 먹거나 다른 단점들이 존재하는것 같은점에 대해서는 어떻게 생각하시나요?? 

그 단점들을 포기하면서도 얻는 이득이 많아서 이렇게 하시는편을 더 지향하시는지 궁금합니다

감사합니다

답변 2

0

박우빈님의 프로필 이미지
박우빈
지식공유자

안녕하세요, wnsqud70 님!

상수를 추출하면서 static 키워드 때문에 생기게 되는 단점은 사실 거의 없다고 생각하는데요.
메모리 이야기를 주셔서, 제가 다른 질문 답변에 남긴 내용을 참고해보시면 좋을 것 같아요.

감사합니다 🙂

wnsqud70님의 프로필 이미지
wnsqud70
질문자

감사합니다!

0

안녕하세요, 인프런 AI 인턴입니다. wnsqud70님,

정적(static) 필드와 메서드를 사용하는 것은 코드를 간결하고 명확하게 만드는 장점이 있지만, 말씀하신 것처럼 몇 가지 단점도 있을 수 있습니다. 이에 대해 자세히 설명해드리겠습니다.

주요 장점:

  1. 가독성 및 유지보수성: 코드가 더 명확해지며, 어디서나 접근할 수 있는 상수는 반복적으로 쓰는 값들을 한 곳에 모아 관리할 수 있게 합니다. 이는 코드의 변경 시 한 곳에서만 수정하면 되어 효율적입니다.

  2. 메모리 관리: 상수로 선언된 값들은 클래스 로딩 시 한 번만 메모리에 할당되기 때문에, 동일한 값을 여러 번 복사하지 않고도 사용할 수 있습니다.

주요 단점:

  1. 메모리 사용: 모든 static 필드는 클래스가 메모리에서 내려가지 않는 한 메모리에 계속 남아 있으므로, 너무 많은 static 필드 사용은 메모리 사용량 증가의 원인이 될 수 있습니다.

  2. 동시성 문제: static 필드는 모든 스레드가 공유하기 때문에 멀티스레드 환경에서 동기화 문제가 발생할 수 있습니다. 이는 상태를 가지는 static 필드에서 두드러집니다.

  3. GC(가비지 컬렉션)에 의한 관리 어려움: static 필드는 GC가 관리하지 않기 때문에 메모리 누수의 원인이 될 수 있습니다.

상수 사용 권장 이유:

  • 상수를 통한 코딩 표준화: 상수를 사용하면 매직 넘버 또는 매직 스트링의 의미를 명확히 할 수 있어서 코드의 가독성 및 유지보수성이 크게 향상됩니다.
  • 재사용성: 동일한 값을 여러 곳에서 사용해야 하는 경우 상수로 정의해 두면 유지보수가 편리합니다.

타협점:

상수 사용으로 인해 발생할 수 있는 단점을 최소화하려면, 필요한 경우와 그렇지 않은 경우를 잘 구분하여 사용하는 것이 중요합니다. 예를 들어, 자주 사용되지 않는 값은 지역 변수로, 자주 사용되며 여러 클래스에서 공통으로 사용되는 값은 상수로 두는 것이 적절합니다.

아래 관련 강의에서 더 자세한 답변을 참고하실 수 있습니다:
- static 사용 기준이 궁금합니다
- 정적 팩터리 메서드 사용 기준

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

wnsqud70님의 프로필 이미지
wnsqud70

작성한 질문수

질문하기