안드로이드 앱 개발기 #40 - 기존 코드 구조 개선 어떻게 하느냐...
현재 개발, 관리 중인 앱들의 다수는 몇년 전에 만들어져서 오래된 낡은 코드들이 많습니다. 새로운 구조의 신선한 코드로 모두 바꿀 수 있다면야 좋겠지만, 현실적으로 쉽지 않지요. 시간이 오래 걸리는 문제도 있지만, 기존 코드를 완벽하게 이해해야 구조를 바꾸는 것이 가능하다는 점입니다. 만약 어느 코드가 이해가 안 된다... 그런 코드는 건드릴 수가 없는 것입니다. 임의로 수정했다가 여기저기서 버그들이 뻥뻥 터지면... 답이 없죠. 그 때 가서는 없던 일로 해야 할지도 모릅니다.
그렇다고 오래된 코드를 그냥 둬야 할까요? 버그 수정 또는 사업 부서의 요청으로 수정해야 할 일은 언젠가 생깁니다. 실제로도 여러번 경험을 했구요. 그 때마다 느낀 점은 오래된 복잡한 코드는 정말 보기 싫다는 거더라구요. 부분적으로라도 개선은 해야겠다는 필요성을 느끼곤 합니다.
단계적 코드 개선
코드 개선은 한 큐에 하기는 쉽지 않습니다. 대안으로 단계적 코드 개선을 시험삼아 해보고 있습니다. 제가 생각 중인 단계들은 다음과 같습니다.
- 뷰 바인딩 적용, 뷰 관련 보일러플레이트 코드 삭제
- 언어 변환: 자바에서 코틀린으로 (안드로이드 스튜디오 제공하는 변환 기능 이용)
- 자바 스타일 코드를 코틀린 스타일로 대체
- 뷰모델 클래스 만들고, 액티비티 클래스에서 구현된 뷰와 무관한 로직들은 그리로 이동
- API 연동 라이브러리 변경: Retrofit으로
현재 특정 화면 대상으로 3번째 단계까지 해보고 있습니다. 마지막 단계까지 해보고 후기를 남길 예정입니다.
지난 안드로이드 앱 개발기
- #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)
[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.