마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

MVVM 패턴에서 data 클래스 내부에서는 무엇을 최대한 안하는게 좋나요?

0 추천

이런 저런 코드 보는데 제 코드도 그렇고

데이터 클래스 내부에 UUID를 가지는 id 프로퍼티가 있다고 가정을 합니다.

id는 아이템(인스턴스)당 고유하게 하나만 가져야하므로 값이 변할일 없으니까 

생성과 동시에 초기화를 해주는 코드를 작성했거든요,

class Header(
        val id: String = UUID.randomUUID().toString(), // Id, UUID 사용
        val workout: String, // 운동 종목
        val unit: String, // 무게 단위 (kg or lbs)
    ) 
}

이런식으로요

 

그런데 다른 비슷한 코드들을 보니까 UUID를 생성과 동시에 인자로 주더라구요,

Header(UUID.randomUUID().toString(), "1", "2")

대충 이런식으로요.

 

그래서 별거아닌데 혹시 MVVM패턴의 이유때문인지 궁금합니디ㅏ.

Kotlin 문법으로보면 문제가 없지만, 혹시 MVVM 패턴에서 뭐 비지니스로직이라던지 그런것때문에

data class 이내에서 저런 생성 코드는 지양 해야한다던지 그런게 있을까요?

아님 저건 그냥 코드 작성자가 아무의미 없이 한걸까요?

 

codeslave (3,940 포인트) 님이 2021년 12월 22일 질문

1개의 답변

0 추천
위의 코드를 비지니스 로직으로 볼 수도 있지만 아닐 수도 있습니다. 논쟁이 필요한 코드예요. 비지니스 로직으로 본다면 ViewModel 에 있는 게 적합하지 않구요, 그렇지 않다면 상관없을 거구요. 님의 앱 구조에 달린 사항이 될 것 같습니다만 그런 질문이 생기는 원인이 아마도 HeaderItem의 ID와  DB에 있는 Entity를 공유하고 있고 이걸 DB 쪽이 아닌 ViewModel에서 하려고 해서 생기는 게 아닌가 하는 생각이 들긴 합니다.

그리고 생성자에 필요한 properties를 넘기는 것은 MVVM과는 무관하고 어떻게 클래스의 인스턴스를 생성하는 지에 대한 겁니다.
클래스를 생성하는데에도 다양한 패턴이 존재하지만, 위와같이 간단한 필드들만 있을 경우는 그냥 저렇게 생성자를 사용하면 보통은 충분할 겁니다.

그리고 최근 구글에서 업데이트한 앱 아키텍쳐에 대해 읽어 보시면 질문하신 내용의 궁금즘이 어느정도는 풀리실 거예요. 참고로 해당 문서는 영어버전만 제공이 되는 것 같아요.

https://developer.android.com/jetpack/guide?gclid=Cj0KCQiAk4aOBhCTARIsAFWFP9EhtJlhXr70GcWXLLkPigst0_TiIw4AeR804Jj-CTe5UeUU9GlTvNAaAqGmEALw_wcB&gclsrc=aw.ds
spark (224,800 포인트) 님이 2021년 12월 22일 답변
spark님이 2021년 12월 23일 수정
감사합니다. 조금 읽어봤는데 쫌 어렵네요.. 저는 한국어로 나오기는하네요..
그런데 문서에서 언급만 안되어있지 내용이 MVVM 팬턴에 관한 내용 또는 유사한것 같은데 맞나요?
라이프 사이클 때문에 ViewModel 을 사용하라고 권장하기는 하지만, 해당 문서는 정확하게는 MVVM에 대한 내용은 아닙니다. 그래서 문서 내에서 MVVM이라는 용어를 쓰지는 않습니다. 실제 구현을 한다면 MVP나 MVVM을 사용할 확률이 높아지긴 하겠죠.
...