코딩/코드리뷰 17

lateinit 초기화 확인하기

kotlin 1.2부터는 lateinit 초기화를 확인 할 수 있다. 실제 값을 사용할 때 lateinit을 한번 체크해줌으로써 안전하게 접근할 수 있따. 이때 아래와 같이 ::을 통해서만 접근이 가능한 .isInitialized을 사용하여 체크할 수 있다. // 부르는 시점 초기화 sampleAdapter = SampleAdapter(ImageLoaderAdapterViewModel(this@SampleMainActivity, 3)) if (::sampleAdapter.isInitialized) { sampleAdapter.addItem() sampleAdapter.notifyDataSetChanged() } isInitialized는 Higher-Order function과 kotlin extensi..

코딩/코드리뷰 2021.09.09

뷰 바인딩

View binding 이란? 간단하게 findViewById를 쓰지 않고, XML의 view component에 접근하는 object를 반환받아 view에 접근하는 방식입니다. 여기서 말하는 object는 Android studio에서 자동으로 대신 만들어줍니다. 액티비티에서 이미 binding = ActivityPreviewmovieBinding.inflate( layoutInflater ) 바인딩을 해준 상태이고. 그 안에 include된 변수를 가져올 때에는 binding.변수.변수로 접근하여 사용했다. 하지만, parentView를 넣어 binding해야 하는 경우가 생김. bindingCustomOverlay = ExoStyledPlayerCustomOverlayViewBinding.infla..

코딩/코드리뷰 2021.08.31

for문 filter와 map으로 변경하기

1. 내가 짠 소스 for( data in images ) { if( data.type == TYPE ) { list.add(data) } } filter와 map을 이용 list.addAll( images.filter { data -> data.type == TYPE }.map { data -> data } ) 성능상 부담스럽다면 mapNotNull을 이용할 수도 list.addAll( images.mapNotNull { data -> data.takeIf{ data.type == TYPE }?.let { it } } ) filter() : 필터 filter()는 리스트내에 인자들 중 조건에 일치하는 인자만 필터링합니다. map() : 변환 map()은 컬랙션 내 인자를 변환하여 반환할 때 사용됩니다...

코딩/코드리뷰 2021.08.27