-
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 권성찬] 3주차 과제_STEP 3 #108
base: ksc1008
Are you sure you want to change the base?
Conversation
…face having to methods
# Conflicts: # app/src/main/java/ksc/campus/tech/kakao/map/views/KakaoMapFragment.kt
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.
이번 한 주도 수고하셨습니다!
서버 통신 하는 부분이나 Adapter 활용하는 부분을 기존의 것을 사용하지 않고 직접 구현하시는 부분이 감명 깊었습니다.
직접 만들다보니 조금 투박하거나 한 부분이 있긴 하지만 추후에 관련 객체를 활용하실 때 이 경험이 도움이 될 거라는 생각이 드네요.
리뷰 남겨드리니 읽어보시기 의견 부탁드립니다 :)
app/src/main/java/ksc/campus/tech/kakao/map/models/dto/KeywordSearchResponse.kt
Outdated
Show resolved
Hide resolved
app/src/main/java/ksc/campus/tech/kakao/map/models/repositories/SearchResultRepository.kt
Outdated
Show resolved
Hide resolved
searchViewModel.searchText.observe(this) { | ||
searchInput.setQuery(it, false) | ||
} |
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.
two-way binding 적용하셨네요 훌륭합니다 👍
app/src/main/java/ksc/campus/tech/kakao/map/views/MainActivity.kt
Outdated
Show resolved
Hide resolved
app/src/main/java/ksc/campus/tech/kakao/map/view_models/SearchActivityViewModel.kt
Outdated
Show resolved
Hide resolved
override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean { | ||
val oldItem = oldList[oldItemPosition] | ||
val newItem = newList[newItemPosition] | ||
return (oldItem.type == newItem.type && oldItem.address == newItem.address && oldItem.name == newItem.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.
data class 이니까 단순히 oldItem == newItem 으로 작성하시면 될 것 같은데 id는 비교하지 않는 이유가 있나요?
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.
areItemsTheSame 이 true일 때에만 areContentsTheSame이 호출된다고 알고 있습니다. 그래서 이전에 체크한 id는 비교해야할 필요가 없다고 생각하여 성능 향상을 위해 나머지 프로퍼티만 비교하게끔 코드를 구성했습니다...
다만 지금 생각해보니 성능 차이는 미미할 뿐더러, 가독성과 확장성을 생각하면 oldItem == newItem으로 작성하는게 더 낫겠다는 생각이 드네요!
# Conflicts: # app/src/main/java/ksc/campus/tech/kakao/map/models/SearchKakaoHelper.kt # app/src/main/java/ksc/campus/tech/kakao/map/models/dto/KeywordSearchResponse.kt
# Conflicts: # app/src/main/java/ksc/campus/tech/kakao/map/views/KakaoMapFragment.kt
수정 사항 반영해서 푸쉬했습니다! |
실제 Retrofit에서 추상화된 HTTP 웹 통신이 어떻게 수행되는지 약간이나마 이해할 수 있었던 경험인 것 같습니다.
코드를 작성하면서 어려웠던 점
HttpsURLConnection 클래스를 이용해서 웹 통신을 수행할 때 요청 전송, 응답 수신 등의 과정이 어느 시점에서 수행되는지 이해하는 게 난해했습니다.
서버와의 연결이 특정 함수를 호출해야지 수행되는 것이 아닌, 객체의 일부 프로퍼티에 접근하는 과정에서 암시적으로 이루어진다는 사실은 인터넷 검색을 통해서 알게 되었습니다..
중점적으로 리뷰해주셨으면 하는 부분
3단계 과제의 경우 코루틴 사용을 지양하라는 제약이 있어 쓰레드를 사용하였습니다. 마땅히 더 잘 구현할 방안이 떠오르지 않아 지금은 단순히 코루틴 대신 쓰레드 블럭 안에 모든 로직을 넣는 방식으로 구현하였습니다. 쓰레드는 잘못 다루게 될 경우 여러 문제가 발생할 수도 있어 사용에 주의를 요한다고 알고 있습니다. 제가 구현한 방식은 문제가 없을지 궁금합니다.
많은 모델 클래스가 추가되어 모델 패키지를 하위 패키지로 세분화하였습니다. 지금처럼 프로젝트를 구성하는게 적절한 방향인지 알고 싶습니다.