안드로이드 앱 개발기 #41 - 이번에 실행한 단계적 코드 개선
바쁜 개발 업무가 지나가고 시간이 나면서 그 동안 묵혀 두었던 기존 앱의 코드 개선을 진행하고 있습니다. 한번에 확 바꾸기는 어려워서 단계적으로 바꿔 보기로 했구요. 지난 포스트 #40에서 단계적 코드 개선을 리스트로 적어 보았습니다. 이후 개선을 진행하면서 단계를 변경하여 추가 정리를 했습니다.
이번 코드 개선의 대상은 1개의 화면이었습니다. 앞으로 남은 화면들을 진행하면서 단계별 개선이 또 바뀔 수 있습니다. 시행착오가 발생할 수 있고요. 1달 정도의 시간을 추가로 사용하여 다듬어 보고자 합니다.
예전 단계적 코드 개선
지난 포스트(#40)를 작성하면서 고려하던 코드 개선 단계들은 다음과 같았습니다.
- 뷰 바인딩 적용, 뷰 관련 보일러플레이트 코드 삭제
- 언어 변환: 자바에서 코틀린으로 (안드로이드 스튜디오 제공하는 변환 기능 이용)
- 자바 스타일 코드를 코틀린 스타일로 대체
- 뷰모델 클래스 만들고, 액티비티 클래스에서 구현된 뷰와 무관한 로직들은 그리로 이동
- API 연동 라이브러리 변경: Retrofit으로
예전 단계적 코드 개선
코드 개선은 한 큐에 하기는 쉽지 않습니다. 대안으로 단계적 코드 개선을 시험삼아 해보고 있습니다. 제가 생각 중인 단계들은 다음과 같습니다.
- 뷰 바인딩 적용, 뷰 관련 보일러플레이트 코드 삭제
- 언어 변환: 자바에서 코틀린으로 (안드로이드 스튜디오 제공하는 변환 기능 이용)
- 자바 스타일 코드를 코틀린 스타일로 대체
- 뷰모델 클래스 만들고, 액티비티 클래스에서 구현된 뷰와 무관한 로직들은 그리로 이동
- API 연동 라이브러리 변경: Retrofit으로
현재 변경된 단계적 코드 개선
후반부 단계 변경, 추가를 했습니다. API 연동 라이브러리 변경이 쉽지 않아 보였기 때문입니다. 그것은 앱 전체적인 1차 개선을 마친 후 고려해 보기로 했습니다.
- 액티비티/프래그먼트에 뷰 바인딩 적용, 뷰 관련 보일러플레이트 코드 삭제
- 액티비티/프래그먼트 대상으로 언어 변환
- 자바에서 코틀린으로 (안드로이드 스튜디오 제공하는 변환 기능 이용)
- 자바 스타일 코드를 코틀린 스타일로 대체 (1차)
- 뷰모델 클래스 만들고, 액티비티 클래스에서 구현된 뷰와 무관한 로직들은 그리로 이동
- 자바 스타일 코드를 코틀린 스타일로 대체 (2차)
- 불필요하게 꼬여 있는 로직 단순화
- 액티비티/프래그먼트와 연결되는 클래스들의 언어 변환, 로직 단순화
지난 안드로이드 앱 개발기
- #40 - 기존 코드 구조 개선 어떻게 하느냐...
- #39 - API 연동시 주의할 점
- #38 - 정렬 사용 방법도 알아두면 좋겠습니다
- #37 - 인터페이스를 자바 언어로 정의하는 이유
- #36 - 하이브리드 앱 만들면서 웹뷰 관련 구현해야 할 것들
- #35 - 코루틴 학습하면서 추가로 알아야 하는 것들
- #34 - 맥북에어로 안드로이드 앱 개발은 무리인가...?
- #33 - build.gradle.kts 파일 수정 후 발생한 빌드 오류 AAPT: error: resource android:attr/lStar not found
- #32 - 가독성 증진을 위한 확장 함수 사용
- #31 - RxJava2 사용하며 만난 NullPointerException: The mapper function returned a null value.
- #30 - 나이트 모드를 고려하지 않아 메인 화면 시작시 발생한 IllegalStateException
- #29 - 잊고 있었던 앱 재시작 샘플 코드
- #28 - 문자열 리소스 파일 strings.xml 어떻게 작성하면 좋을까?
- #27 - 클린 아키텍처에서 domain 모듈
- #26 - 클린 아키텍처 구현을 위한 모듈 구성
- #25 - 스팀 관련 샘플 코드 만들면서 잘못한 점
- #24 - 시작 화면 구성 요소 식별하기
- #23 - 프로젝트 초기 화면 구성부터 대략적으로...
- #22 - Kotlin 코드로 JavaScript 코드를 실행할 수 있을까?
- #21 - 실습 도중 발생한 오류: A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution
- #20 - 클립보드에 텍스트 복사하는 함수 만들어 보기 (Kotlin)
- #19 - 데이터 바인딩 적용했으나 UI 자동 업데이트 되지 않는 문제
- #18 - 에뮬레이터에서 토스트 안 보이는 문제 (1)
- #17 - 유닛 테스트를 실행할 수 없는 문제 해결
- #16 - 잘 되던 유닛 테스트를 실행할 수 없는 문제
- #15 - 앱 재시작 코드
- #14 - Fragment 사용시 간혹 발생할 수 있는 Fragment not attached to Activity 문제
- #13 - Retrofit2 활용 서버로부터 받을 데이터 유형 JsonElement (JSONObject 사용 불가)
- #12 - Glide 활용하여 이미지 다운로드 받는 코드
- #11 - 처리할 수 없는 예외/크래쉬 발생시 앱 재시작하기
- #10 - 안드로이드 스튜디오 업그레이드 후 단축키가 안되면? (맥북)
- #9 - LiveData 객체에 동일 데이터 설정하면 observer 실행되는지 확인 목적의 샘플 프로젝트
- #8 - 안드로이드 스튜디오에서 빌드시 발생하는 Build Tools revision 31.0.0 오류
- #7 - 'UGC(사용자 생성 콘텐츠) 정책 미준수'로 심사 거절
- #6 - 뷰에 역마진 적용 불가시 translationX, translationY 속성 사용하기
- #5 - 프로젝트 생성 후 빌드시 발생 오류: The minCompileSdk (31) specified in a dependency's AAR metadata
- #4 - 프로젝트 생성 후 빌드시 발생 오류: The minCompileSdk (31) specified in a dependency's AAR metadata
- #3 - 무한 롤링 배너 만드는 법을 찾았으나, 높이를 wrap_content로 지정이 안 먹히는 문제점이...
- #2 - setContentView 메소드의 파라메터를 변경하지 않아서 발생한 화면 오류
- #1 - 페이스북 로그인 연동시 발생했던 문제들
Posted through the AVLE Dapp (https://avle.io)
@tipu curate 3
Upvoted 👌 (Mana: 0/3) Get profit votes with @tipU :)
임대 추가 보팅완료
[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.
Upvoted! Thank you for supporting witness @jswit.