본문 바로가기
책(독서)

[켄트벡의 구현패턴] ~106p 06. 상태

by DevJR 2020. 9. 6.
  • 상태 : 시간에 따라 변화하는 값 (ex 변수)
  • 접근 : 상태에 대한 접근. (public, private 등 접근을 제어 가능)
  • 직접 접근 : 객체 내의 상태(변수) 에 직접 접근.
  • 간접 접근 : 메소드를 통해서 상태(변수)에 접근. (2개 이상의 데이터 간의 의존 관계가 존재하는 경우)
  • 공용 상태 : 클래스 내의 모든 인스턴스에 적용되는 상태가 존재할 경우 필드로 저장해서 공용으로 쓴다.
  • 가변 상태 : 인스턴스 마다 다른 상태를 사용해야 할 경우 필드 저장이 아닌 맵으로 만든다.
  • 외재 상태 : 이해한 바대로라면 지역변수에 가변 상태를 저장하는 경우를 외재 상태로 이해함.
  • 변수 : 변수는 단순한 이름을 갖는게 좋음. (간단하면서도 이해하기 쉽게)                                                                               변수의 생명 기간은 변수의 범위에 가까워지도록  같은 범위에서 정의되는 변수들은 같은 생명기간을 갖도록
  • 지역변수 : 변수가 선언된 지점이 속한 범위에서만 접근 가능 (특정 범위내에서만 사용하는 변수 ex 메소드 내)
  • 필드 : 필드는 객체 전반에 사용되는 변수 (ex 클래스 변수)
  • 파라미터 : 정적필드/필드 사용하지 않고 상태를 다른 객체에 전달시엔 '파라미터' 사용 (클래스간 의존성 감소)
  • 수집 파라미터 : 결과를 모으는 로직을 짤 때, 메소드 파라미터를 전달해서 결과를 수집하는 편이 더 직관적.
  • 옵션 파라미터 : 반드시 필요한 파라미터를 먼저 앞에서 전달, 옵션 파라미터는 그 뒤에 전달.
  • 가변인자 : 파라미터가 가변적으로 들어올 경우 ... 을 통해 여러개의 파라미터가 들어올 수 있음을 표현.                                              옵션인자보다도 뒤에 위치.
  • 파라미터 객체 : 여러개의 파라미터가 함께 여러 메소드로 전달된다면,                                                                                         이 파라미터들을 묶어서 객체로 만드는게 낫다.
  • 상수 : 프로그램의 여러 부분에서 변하지 않는 상태를 사용해야 할 때, 상수를 사용. static final로 선언. 상수를 메시지로 전달하는 방법보다는 해당 상수에 대한 각각의 메소드를 사용하는 편이 나음.
  • 역할 제시형 작명 : 변수의 이름을 통해 변수의 역할을 전달. 생명기간이나 타입은 굳이 변수명에 쓸 필요는 없다.
  • 선언 타입 : 변수명에 컬렉션 이름 arrayList 이런식으로 구체적인 이름을 넣지 말고, members 이런식으로 컬렉션이라는 적은 정보 정도만 전달한다. 그래야 추후 수정하기에도 용이하고 유연성이 늘어난다.
  • 초기화 : 변수가 사용되기 전에 알고 있는 상태로 만드는 작업. 보통 선언과 동시에 해주는게 좋음.
  • 열성적 초기화 : 선언과 동시에 초기화 하는것. (일반적)
  • 게으른 초기화 : 초기화 비용이 상당하고, 비용부담을 가급적 늦추고 싶을 때에는 해당 상태(변수)를 취득하는 메소드를 만들고 그 메소드가 호출될 때, 초기화 한다.