Skip to content

RIBs 의 Component type이 class로 구현된 이유가 궁금합니다. #4

Discussion options

You must be logged in to vote

안녕하세요 gookhee님,
의존성을 들고 있는 객체의 타입을 struct로 할것이냐 class로 할것이냐는 질문이신데요, 두가지 모두 선택하실수 있겠으나 클래스를 쓰는 이유가 조금 더 좋다고 생각하는 이유를 말씀드리겠습니다.

Component가 들고 있을 객체들이 오로지 struct만 있을 확률은 거의 0에 가깝다고 생각합니다. 앱에는 분명 클래스로 된 구현체들이 있을거고, component가 클래스 구현체를 프로퍼티로 들고 있다면 component가 struct일 이유가 없습니다. 클래스인 프로퍼티들은 component가 struct여도 어차피 레퍼런스 타입으로 동작할 것이고, 그러면 동작은 똑같지만 component가 struct인 것이 오히려 코드를 읽는 개발자를 헷갈리게 할 수 있다고 생각합니다.

struct의 장점은 프로퍼티도 전부 struct인 경우에(객체가 온전히 밸류타입처럼 동작할때) 극대화되고, 그런 경우에 개발자가 더 안심하고 사용할 수 있거든요. 안심한다는 것은 struct를 쓸때는 내가 프로그램의 다른 영역에 영향을 주지 않는다고 자신할 수 있다는 거고요. struct 객체가 class 프로퍼티를 들고 있으면, 겉보기엔 밸류타입지만 실상은 레퍼런스 타입인 상황이므로 개발자에게 혼동을 줘서 좋지 않다고 생각합니다.

Replies: 1 comment

Comment options

You must be logged in to vote
0 replies
Answer selected by nsoojin
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
2 participants