-
반응형
안녕하세요, 하루플 입니다 😋
혼자 프로젝트 재미로 진행할 때는 String이나 Color같은 리소스 파일 관리를 제대로 하지 않고 하드코딩으로 개발했는데 프로젝트가 점점 난잡해지고 나중에 리소스 유지보수도 거의 불가능해졌었습니다..
그래서 프로젝트를 제대로 진행한다면 리소스 파일을 따로 분리해서 관리하고, 리소스 변수 명도 규칙적으로 사용해서 나중에 유지보수 할 때 쉽도록 해야 합니다. 저는 회사에 와서야 제대로 관리하기 시작했는데요 우선 제가 생각한 리소스 관리의 장, 단점이 있습니다.
장점
1. 하나의 리소스를 여러 뷰에 적용할 수 있으므로 리소스 하나만 바꾸면 원하는 모든 뷰를 한번에 바꿀 수 있다. (유지보수 효율 증가)
2. 해외 다국어 지원을 할 때 리소스 파일을 사용하여 편하게 지원할 수 있다.
3. 하드 코딩을 하지 않아 클린 코드에 적합한 코딩을 할 수 있다.
단점
1. 리소스 관리에 따른 시간이 소요된다. (리소스 변수명 고민, 리소스 적용 시간)
2. ...? 😰
저는 이렇게 장점이 훨씬 많다고 생각하기 때문에 회사 뿐만 아니라 개인 프로젝트를 진행할 때도 리소스 관리를 당연히 따로 하고 있습니다.
String 리소스 관리
리소스 파일 제가 String 리소스를 관리하는 방법입니다.
꼭 이렇게 지킬 필요는 없지만 리소스 변수 명을 작성할 때 스스로 지키는 규칙입니다.
화면 이름_scr_변수명
여기서 scr은 화면을 뜻하는 screen의 약자입니다.
각 화면을 scr 단어로 구분하고 뒤에 변수 명을 붙혀 다른 화면끼리 같은 단어가 나오더라도 중복되지 않도록 작업했습니다.
같은 단어를 왜 다른 string으로 구분하였냐면 화면 단위로 리소스를 관리하는게 유지보수 측면에서 훨씬 쉽다고 판단하였습니다. 같은 텍스트라고 변수명을 묶어버리면 나중에 기획이 변경되어 해당 텍스트를 변경하였는데 상관없는 다른 화면까지 줄줄이 바껴버리는 문제가 생길 수 있습니다. 이런 문제를 원천적으로 차단하기 위해 화면 단위로 리소스를 관리하고 있습니다.
String 리소스는 xml 혹은 자바/코틀린 코드에서도 쉽게 사용할 수 있습니다.
values - strings.xml
<string name="dashboard_scr_login">로그인</string>
xml 파일에서 사용하는 방법
android:text="@string/dashboard_scr_login"
코틀린 파일에서 사용하는 방법
binding.tvLogin.text = getString(R.string.dashboard_scr_login)
코틀린 파일에서 사용하려면 이렇게 getString을 사용하여 적용합니다.
Color리소스 관리
values - colors 에 원하는 컬러 색상을 만들어서 색상을 관리할 수 있습니다.
하나의 컬러 리소스를 여러 텍스트 뷰 같은 곳에 적용을 해두고 color 리소스 파일 색상만 바꾸면 자동으로 적용한 모든 텍스트 뷰 컬러가 바뀌기 때문에 효율적으로 프로젝트를 관리할 수 있습니다.
<color name="black">#000000</color> <color name="white">#FFFFFF</color> <color name="primary_black">#21242E</color> <color name="primary_blue">#1377C4</color> <color name="primary_purple">#6C4AE2</color>
저는 이렇게 컬러 리소스를 생성하였습니다.
xml 파일에서 사용하는 방법
android:textColor="@color/primary_purple"
"@color/리소스 변수 명" 을 사용해 적용합니다.
코틀린 파일에서 사용하는 방법
binding.tvLogin.setTextColor(ContextCompat.getColor(applicationContext, R.color.primary_purple))
리소스 관리에서 중요한건 역시 변수 명에대한 규칙을 확실히 세워 다른 개발자도 리소스를 보고 헷갈리지 않고 개발할 수 있도록 하는 것 같습니다.
궁금한 점 있으신 분은 댓글로 남겨주시면 답변 드리겠습니다!
반응형'개발 > Android' 카테고리의 다른 글
안드로이드스튜디오 자바를 코틀린으로 번역하는 가장 쉬운 방법! (Convert Code From Java) (0) 2022.06.13 안드로이드스튜디오 스택에 쌓인 Activity 한번에 종료하기 (0) 2022.06.13 안드로이드스튜디오 뒤로가기 두번 클릭 시 Activity 종료 (onBackPressed) (0) 2022.06.09 안드로이드스튜디오 기본 설정 앱 알림 접근/알림 표시 상태 확인/알림창 띄우기 (0) 2022.06.08 코틀린(abstract) 추상 함수와 추상 클래스, 추상 프로퍼티의 개념 (1) 2022.03.01 댓글