본문 바로가기

오늘은 뭘 배울까?68

화면을 회전할 때 viewModel의 onCleared가 호출되지 않는 이유 1. 요약 2. viewModel 2-1. 개념 2-2. viewModel은 언제 파괴될까? 1. 요약 🧑‍💻: Activity의 onDestroy가 호출되면 viewModel의 onCleared가 호출된다고 하셨는데 그러면 화면을 회전할 때 왜 viewModel의 onCleared가 호출되지 않을까요? 👨🏻‍🦱: if문으로 화면을 회전하는 경우를 따로 처리해주었기 때문입니다. 코드 내부를 들여다보면 알 수 있습니다. 2. viewModel 2-1. 개념 viewModel에 대해서는 예전에 자세히 정리해둔 포스팅이 있다. 요약하자면 "viewModel은 Activity와 독립적인 생명주기를 가지기 때문에 Activity가 onDestory 되어도 데이터를 유지할 수 있게 해준다"이다. 2-2. onDes.. 2022. 8. 26.
좋은 코드란 무엇일까? 1. 면접에서 질문을 받았다 2. 책에서 답을 찾아보자 3. 책에 있는 좋은 예시들 3-1. 이름에 정보 담기 3-2. 주석 3-3. 코드 분량 줄이기 3-4. 테스트와 가독성 4. 느낀 점 💡 1. 면접에서 질문을 받았다 "본인이 생각하는 좋은 코드와 나쁜 코드는 무엇인가요?" 이번에 면접에서 받았던 질문이다. 평소 나름의 규칙대로 고민을 하며 코드를 짜 왔기에 대답을 잘할 수 있을 거라 생각했다. 하지만 지금 내 답변을 돌이켜보면 만족스럽지 못한 대답이였던 것 같다. 뭔가 딱 정의를 내려서 말하기 애매하다고 해야할까. 그래서 다시 한번 고민해보기로 했다. 나에게... 좋은 코드란...? 2. 책에서 답을 찾아보자 원래 같았으면 인터넷에서 정보를 찾아보려고 했을 텐데, 이번에는 책에서 찾아보기로 했다... 2022. 7. 31.
Kotlin 확장 함수(Extension Function)를 아시나요? 1. 요약 2. Extension 3. Extension Function 3-1. 개념 3-2. 예제 4. Extension Property 4-1. 개념 4-2. 예제 5. 퀴즈 5-1. 확장 함수는 오버라이딩이 가능할까? 5-2. 확장 함수는 오버로드가 가능할까? 5-3. 멤버 메서드 이름과 확장 함수 이름이 같으면? 확장 함수가 실행될까? 5-4. 확장 함수는 프로젝트 안의 모든 곳에서 사용할 수 있을까? 5-5. 확장 함수는 정적 바인딩 된다? 1. 요약 🧑‍💻: Kotlin Extension을 아시나요? 👨🏻‍🦱: 네. 상속이나 디자인 패턴 없이 클래스를 간단하게 확장할 수 있는 방법입니다. 실제로 클래스 내부에 메서드나 프로퍼티가 생성되는 것은 아니며, 정적 바인딩 된다는 특징이 있습니다. 2.. 2022. 7. 16.
Delegation이 무엇인지 아시나요? (상속과 구성까지 알아보자) 1. 요약 2. 상속과 구성 2-1. 상속 2-2. 상속의 문제점 2-3. 구성 2-4. 구성의 문제점 2-5. 그렇다면 무엇을 사용해야 할까? 3. 결합을 더 느슨하게 하기 4. Delegation 4-1. 개념 4-2. 예제 4-3. Delegation을 쉽게 사용하는 방법 1. 요약 🧑‍💻: Delegation이 무엇인지 아시나요? 👨🏻‍🦱: Delegation은 어떤 기능을 자신이 처리하지 않고 다른 객체에 위임시켜 그 객체가 일을 처리하도록 하는 것입니다. Java와 달리 Kotlin은 by 예약어를 통해 Delegation을 편하게 사용할 수 있습니다. +) 다른 클래스를 private 인스턴스 변수로 가지고 있는 Composition과 다른 클래스의 메서드를 호출하여 결과를 반환하는 Forw.. 2022. 7. 11.
Observable Field와 LiveData의 차이가 무엇인가요? 1. 요약 2. LiveData 3. Observable 3-1. 개념 3-2. 사용법 4. 그래서 둘의 차이는? 5. LiveData가 무조건 좋은 걸까? 1. 요약 🧑‍💻: LiveData와 Observable Field의 차이가 무엇인가요? 👨🏻‍🦱: LiveData는 수명주기를 알고 있기 때문에 observer를 자동으로 관리하지만 Observable Field는 수명주기를 알지 못해 수동으로 관리해주어야 합니다. 그렇기 때문에 메모리 누수 면에서 LiveData가 유리하다고 할 수 있습니다. 2. LiveData LiveData는 Jetpack에서 지원하는 라이브러리이며 데이터를 관찰하고 있다가 변경 사항이 생기면 알려주는 아주 기똥찬 녀석이다. LiveData에 대해서는 정리해둔 게시글이 있으.. 2022. 7. 9.