코틀린이 JVM에서 돌아가고 자바와 호환이 대부분 되지만 익숙하게 다루시려면 시간이 좀 걸립니다. 특히 코틀린은 자바에서 사용하지 않는 Non-Nullable 타입, Readonly 타입 같은 것을 사용하기 때문에 자바코드를 코틀린으로 바로 변환하면 많은 !! 를 보게 됩니니다. 데이터 타입의 차이로 인해 코틀린 자바타입을 완전하게 변환할 수 없어서 생기는 결과입니다. 결국은 안드로이드 스튜디오같은데서 제공하는 변환 툴을 통해 변환하고 나더라도 수작업으로 코드를 정리해 주어야 합니다.
String name;
위와 같은 자바 코드가 있다면 문맥에 따라 코틀린은 위의 코드가 Nullable인지 Non-Nullable인지 헷갈릴 수 있습니다. 따라서 자바코드를 코틀린으로 변환할 때 좀 더 명확하게 컴파일러에게 알려주는 것이 좋습니다.
@Nullable
String name;
@NonNullable
String name = ""
아마 자바 쪽에 @Nullable, @NonNullable 어노테이션을 붙여주고 나서 변환하시면 !!부분이 많이 줄어들 것으로 생각합니다.
그리고 MVVM 은 구글의 샘플코드를 참고해 보세요. Github 검색을 하시면 구글 샘플이나 오픈 소스 샘플이 무지하게 많습니다.
Android MVVM with Kotlin
정도로 검색하시면 되지 않을까 싶네요.