라떼는말이야

확장성 및 재 사용성을 위한 파일 구조화 (리팩토링) 본문

프로젝트/[안드로이드] 강의 평가 프로젝트

확장성 및 재 사용성을 위한 파일 구조화 (리팩토링)

MangBaam 2022. 1. 8. 00:12
반응형

2명 이상 프로젝트를 협업하면 의사 소통과 더불어 가장 중요한 것이 일관성 있게 개발하는 것이라고 생각한다.

나는 자주 쓰는 속성이나 값들은 한 곳에 모아서 관리하고, 변경될 수 있는 값들은 상수로 관리하는 방식으로 진행했다.

util 패키지 아래에 Constants.kt와 Extention.kt 파일을 만들었다.

Constants.kt

constants.kt

여기서는 상수 값, enum class, object 들을 관리한다.

로그나 API 토큰 정보는 상수로 관리를 하고, 회원 가입 시 비밀 번호 입력 상태나 서버로부터의 응답 상태를 나타내는 enum class를 따로 빼냈고, API 라는 이름의 object로 네트워크와 통신 시 url 을 이 곳에서 따로 관리를 한다.

만약 하드 코딩 되어 있었다면 url에 변화가 생겼을 때 여러 곳에서 모두 변경해야 하고, 누락되는 부분이 존재할 수 있기에 유의미한 작업라고 생각한다.

 

Extension.kt

 Extension.kt

여기서는 확장 함수들을 관리한다.

EditText에서 입력 값에 변화가 있을 때 발생하는 이벤트인 afterTextChanged는 3개의 함수를 오버라이딩 해야한다.

( beforeTextChanged(), onTextChanged(), afterTextChagned() )

EditText.afterTextChanged 확장 함수의 활용

하지만 3개 함수 모두 필요하지 않기 때문에 확장 함수를 활용해서 반복해서 적어야 하는 의미 없는 코드를 최소화 할 수 있었다.

위 사진에서는 확장 함수를 활용한 부분을 일부 가져온 것이다.

회원 가입 시 입력 창에 입력될 때마다 버튼을 활성화 할 지 결정해야 하기 때문에 리스너를 달아야 했는데 이때 확장 함수를 사용하지 않았더라면 적어도 3배 이상의 코드를 더 작성했어야 했다.

이는 귀찮은 건 둘째치고, 코드를 읽기 어렵게 만들기 때문에 확장 함수를 활용하게 되었다.

 

strings.xml

앱에 나타나는 글자들도 일관성을 위해 하드 코딩을 지양하고, strings.xml로 추출하여 활용하는 것을 적극 활용한다.

재 사용하고자 하는 문구를 쉽게 찾기 위해 카테고리(?) 별로 구분해 놓았다.

 

colors.xml

앱에서 사용하는 색들 역시 일관성을 위해 colors.xml에 추출하여 사용한다.

일관성에 있어 문자보다 훨씬 더 중요한 것이 색이라고 생각한다.

 

다짐(?)

기회가 된다면 코딩 계의 교과서인 클린 코드리팩토링2 책을 꼭 읽어 보려고 한다.

반응형
Comments