전 멤버 변수가 없거나 거의 없는 메소드들만 있는 클래스를 보통 정적 클래스로만들고
정적 메소드의 경우 순수함수를 정적으로 만드는데
static을 쓰는거에 회의감이 왓어요
이거 웨쓰나여
static은 안쓰는게 좋다
스태틱은 oop개념에 상반되는 이론이긴한데 런타임 시점에서 메모리에 올라가 GC의 대상이 되지않음. 그래서 인스턴스를 해줄필요도 없고 어짜피 사용할거면 미리 인스턴스 해놓고 사용하는게 좋음
매 다른클래스에서 메소드를 꺼내쓸때 인스턴스를 하게되면 그 갯수만큼 메모리를 할당받는데 미리 정적으로 메모리에 올려놓으면 하나만 할당받아도 되니까 쓰는거임. 아니면 싱글톤패턴을 쓸때 플래그를 설정해놓는 용도로도 자주쓰고
보통 프로젝트 전반에서 쓰는 유틸클래스의 메소드가 스태틱으로 올라오게됨. 아니면 브로드캐스트성 변수들이 스태틱으로 올라오고, 인스턴스된 클래스를 반환하는 로직도 어쩔수없이 스태틱으로 구현됨
쓰는데 주의할점은 여러 쓰레드에서 공통으로 쓰는경우 반드시 동기화나 락을 걸어서 순차적으로 접근하게 만들어야함.
댓글 읽어보니까 저의 OPP 설계 능력이 딸리는덧; 어떻게든 덜 쓸수 있을 것 같은데
아예 안쓰는 형태로 구현가능함. 근데 문제는 그거임
협업과정에서 쓰는것과 안쓰는것의 편리함이 매우다름. 나만 개발하는게 아니라서 힙영역에 올라오는 클래스의 경우 내가 이런식으로 쓰게끔 구현을 하고 API를 만들어 전달해도 그렇게안슴. 근데 스태틱은 쓰는방법이 하나밖에 없으니까 관리의 용이성이 생기기도 함ㅋㅋ
동적으러 구현할 필요가 없는 클래스를 스태틱으로 쓰는거지
최대한 static을 안써야 할것 같은데 정말 피할 수 없는 경우가 머가 있을까여
싱글톤같은거? 보통 getInstance로 사실상표준이된 함수 ? 아니면 광역딜넣는 변수? 요정도
static은 맴버변수에 상관없거나 값오염 안터질경우 찍으면되고
static왜 쓰냐면 new Math().Max(10, 20) 이렇게 찍기 싫으면 쓰자
static은 안쓰는게 좋다
스태틱은 oop개념에 상반되는 이론이긴한데 런타임 시점에서 메모리에 올라가 GC의 대상이 되지않음. 그래서 인스턴스를 해줄필요도 없고 어짜피 사용할거면 미리 인스턴스 해놓고 사용하는게 좋음
매 다른클래스에서 메소드를 꺼내쓸때 인스턴스를 하게되면 그 갯수만큼 메모리를 할당받는데 미리 정적으로 메모리에 올려놓으면 하나만 할당받아도 되니까 쓰는거임. 아니면 싱글톤패턴을 쓸때 플래그를 설정해놓는 용도로도 자주쓰고
보통 프로젝트 전반에서 쓰는 유틸클래스의 메소드가 스태틱으로 올라오게됨. 아니면 브로드캐스트성 변수들이 스태틱으로 올라오고, 인스턴스된 클래스를 반환하는 로직도 어쩔수없이 스태틱으로 구현됨
쓰는데 주의할점은 여러 쓰레드에서 공통으로 쓰는경우 반드시 동기화나 락을 걸어서 순차적으로 접근하게 만들어야함.
댓글 읽어보니까 저의 OPP 설계 능력이 딸리는덧; 어떻게든 덜 쓸수 있을 것 같은데
아예 안쓰는 형태로 구현가능함. 근데 문제는 그거임
협업과정에서 쓰는것과 안쓰는것의 편리함이 매우다름. 나만 개발하는게 아니라서 힙영역에 올라오는 클래스의 경우 내가 이런식으로 쓰게끔 구현을 하고 API를 만들어 전달해도 그렇게안슴. 근데 스태틱은 쓰는방법이 하나밖에 없으니까 관리의 용이성이 생기기도 함ㅋㅋ
동적으러 구현할 필요가 없는 클래스를 스태틱으로 쓰는거지
최대한 static을 안써야 할것 같은데 정말 피할 수 없는 경우가 머가 있을까여
싱글톤같은거? 보통 getInstance로 사실상표준이된 함수 ? 아니면 광역딜넣는 변수? 요정도
static은 맴버변수에 상관없거나 값오염 안터질경우 찍으면되고
static왜 쓰냐면 new Math().Max(10, 20) 이렇게 찍기 싫으면 쓰자