Tag: Week1Step2리뷰
- Week1 Step2 피드백 받음!
- Week1 Step3 구현 완료
- 수요일 저녁 스터디!
struct 를 사용해야할 경우
- 두 object를 "같다, 다르다" 로 비교해야 하는 경우
- copy 된 각 객체들이 독립적인 상태를 가져야 하는 경우
- 코드에서 오브젝트의 데이터를 여러 스레드 걸쳐 사용할 경우 ( 안전하게 사용 가능 )
class 를 사용해야할 경우
- 두 object의 인스턴스 자체가 같음을 확인해야 할때
- 하나의 객체가 필요하고, 여러 대상에 의해 접근되고 변경이 필요한 경우
Struct 와 Class 차이점
- Structure는 Value Type 이며 Stack에 저장.
- Class는 Reference Type 이며 Heap에 저장.
- Structure는 Deinitializer, Inheritance, Reference Counting 이 불가하지만 Class 는 모두 가능
- 값 형식인 Struct에서 속성을 바꾸는 메소드를 구현할 때에는 반드시 mutating으로 선언해야함.
사실 이런식으로 정리를 해봤지만, 정작 실제로 코드를 짤 때 저의 의식의 흐름은
- 공식문서에 나와있을 만큼 애플은 struct를 더 좋아함.
- 그러니까 나도 struct 위주로 써야지! 일단 쓰고 필요하면 class로 포팅하지뭐!
- 이거 상속이 필요한가? Y → class / N → struct
요런 단순한 흐름 인 것 같습니다..ㅎㅎ;;
- setter의 접근 수준을 낮춰 읽기는 가능하지만 쓰기에는 제한을 주고 싶을 때 사용합니다.
- 이점으로는 캡슐화를 함으로써 더 안전한 코드를 만들 수 있는 것 같습니다.
- 메서드는 동사로 시작해야된다는 부분을 제외하면 특별한 의도는 없는 것 같습니다.
- IceCreamOption 같은 경우엔 IceCreamMarket 구조체에서만 사용되기 때문에 캡슐화를 해주었습니다.
- 좀 더 좁게 들어가서 Market이 아닌 직접 아이스크림을 건네주는 직원으로 네이밍을 수정해보았습니다.
- 엘런 의도에 맞게 수정한게 맞을까요?