-
Notifications
You must be signed in to change notification settings - Fork 33
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
충남대 Android_정기주 2주차 과제 Step2 #61
base: ddangcong80
Are you sure you want to change the base?
충남대 Android_정기주 2주차 과제 Step2 #61
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LiveData는 적절하게 잘 사용해주셨습니다.
MVVM은 아직 데이터바인딩을 사용하지 않아서 정확한 코멘트를 드리긴 어렵습니다.
view(Activity) viewModel의 역할을 구분할 때
뷰의 변경이 있는 경우만 Activity까지 가서 함수를 호출하고 나머지는 viewModel에서 처리하는 것이 좋습니다. 이 개념을 잘 숙지해두시면 좋을 것 같습니다.
private val dbHelper = PlaceDBHelper(context) | ||
|
||
fun isDataExists(category: String): Boolean { | ||
val db: SQLiteDatabase = dbHelper.readableDatabase |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
DB관련 로직 + 쿼리는 Helper에 두고 해당 함수를 불러서 사용하는 식으로 하면 더 좋을 것 같습니다
) | ||
val exists = cursor.count > 0 | ||
cursor.close() | ||
db.close() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
여기서는 close를 잘 해주셨는데요 다른곳에서도 꼭 해주시기 바랍니다
메모리 릭의 원인이 될 수 있습니다.
class SearchRepository(context: Context) { | ||
private val dbHelper = PlaceDBHelper(context) | ||
|
||
fun isDataExists(category: String): Boolean { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이 함수는 내부에서만 사용한는 것으로 보이는데요 private을 붙여주면 좋습니다.
나중에 협업할 때 해당 함수가 외부에서 사용될 수 있다고 판단되어 무분별한 사용이 일어날 수 있습니다.
private lateinit var saveRecyclerView: RecyclerView | ||
private lateinit var savePlaceAdapter: SavePlaceAdapter | ||
|
||
override fun onCreate(savedInstanceState: Bundle?) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
onCreate의 로직이 다소 복잡하게 느껴집니다. 여러 기능들이 나열되어있어서 그런 것 같은데요
initView등으로 view관련 함수 + adatper 생성을 묶고
dataObserve 하는 함수를 묶어서 각각 함수를 하나씩 호출하면 가독성이 올라갈 것 같습니다.
findViews() | ||
setCancelBtnClickListener() | ||
editTextWatcher() | ||
viewModel.showSavePlace() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이 동작과 아래의 더미 데이터를 넣는 동작은
class MyViewModel: ViewModel() {
init {
// do-something
}
}```
으로 처리해도 좋을 것 같습니다. 이 동작들이 view를 건든다기보다 데이터로드만 하는거라 뷰에 직접적인 연관은 없어보이네요
recyclerView.layoutManager = LinearLayoutManager(this) | ||
viewModel.places.observe(this) { places -> | ||
searchAdapter = SearchAdapter(places) { | ||
viewModel.savePlaces(it.name) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
savePlaces를 한 후에는 항상 viewModel.showSavePlace
를 호출하여 데이터 갱신이 필요해 보이는데요
이럴경우 동작이 두개더라도 하나로 묶는것이 안전할 것 같습니다.
과제 수행 시 어려웠던 점
중점적으로 리뷰해주셨으면 하는 부분