Repository navigation
refactor(afternote): 담당 모듈 화면 노출 문자열 33건 리소스화 — 절반이 「이미 있는 리소스의 미사용」 #1469
Copy link
Copy link
Closed
Labels
area:afternote애프터노트 기능 영역애프터노트 기능 영역refactor동작 변경 없이 코드 구조·책임·경계를 개선하는 작업동작 변경 없이 코드 구조·책임·경계를 개선하는 작업
Description
작업 유형
refactor — 동작 변경 없는 구조·책임·경계 개선
주 담당 모듈
afternote — 애프터노트
개요
내 담당 모듈(core · afternote · receiver · onboarding)에서 화면에 노출되는 문자열이 리소스를 거치지 않고 코드에 박혀 있다. TalkBack 이 낭독하는 contentDescription 과 화면에 그려지는 Text 는 성격이 같으므로 함께 다룬다.
실측 기준 리비전: 2429e0823 (origin/develop)
규모 — 33건
| 갈래 | 건수 |
|---|---|
contentDescription |
6 |
화면 노출 텍스트(Text · title · label · prefix/suffix · Toast) |
27 |
| 합계 | 33 |
모듈별로는 core:ui 2 · afternote 11 · receiver 14 · onboarding 6 이다.
절반 가까이가 신설이 아니라 「이미 있는 리소스의 미사용」이다
이 이슈의 핵심 발견이다. 리소스가 멀쩡히 있는데 같은 문구를 코드에 다시 적어 둔 곳이 계속 나온다.
| 문구 | 이미 있던 키 | 하드코딩돼 있던 곳 |
|---|---|---|
| 영상 재생 | content_description_video_play |
추억 노트 상세 · 수신 추억 노트 상세 |
| 장례식에 남길 영상 | afternote_editor_funeral_video_label |
추억 노트 상세 · 수신 상세(LABEL_VIDEO_SECTION 상수) |
| 추억 플레이리스트 | afternote_editor_playlist_screen_title |
추억 노트 상세 · MemorialPlaylist 기본값 · 수신 상세 |
| 영상을 재생할 수 있는 앱이 없습니다. | receiver_memorial_video_no_app |
수신 상세 Toast |
약관 상세는 더 노골적이다 — 본문 6개는 onboarding_terms_detail_section_N 리소스인데 제목 6개만 코드에 남아 있었다.
값 자체를 다시 본 건 3개
기계적으로 옮기면 잘못된 값이 고착되므로 성격부터 판정했다.
"Play"→null. 수신 상세에서 영상이 없을 때만 그리는else분기 플레이스홀더다.clickable이 없어 재생 액션이 실제로 없는데 "Play" 로 읽히면 없는 어포던스를 알린다. 맥락은 바로 위 섹션 헤더가 이미 읽어 준다.nav_afternote는 참조 0건인 죽은 키였다. 값이 같은 키를 새로 만드는 대신afternote_home_title로 리네임해 실제 쓰이게 했다 — 키 수는 늘지 않는다.MemorialPlaylist(label = "추억 플레이리스트")는 인자를 지웠다. 기본값이 이미 그 리소스라 같은 값을 다시 넘기고 있었다.
제외한 것 — 노출 문자열이 아니다
| 대상 | 제외 근거 |
|---|---|
SaveAfternotePayloadBuilder.MEMORIAL_DEFAULT_TITLE |
서버로 보내는 serviceName 값. 리소스로 옮기면 로케일에 따라 전송값이 바뀐다 |
AfternoteService.displayKey 21건 |
enum 이 stringResId 를 따로 갖고 있다. 표시는 그쪽이 하고 이건 카탈로그 매칭용 식별자 — Text 로 그려지는 곳 0건 |
BaseResponse.fallbackMessage 등 |
KDoc 이 «클라이언트 진단 문구» 로 규정. 사용자 노출은 serverMessage 가 맡는다 |
TextFieldShort.kt:403 · MemorialDetailScreen 의 "서영" |
@Preview 인자·프리뷰 데이터 |
label = "IndicatorOffset" 류 |
animateFloatAsState 의 디버그 라벨. UI 노출 아님 |
core/ui/PlusBadgeButton.kt 의 "Plus Button" |
@Preview 인자. develop 에선 #1434 로 이미 삭제됨 |
신규 키는 afternote_ 프리픽스로 만든다
#1079 가 이 모듈 리소스를 afternote_ 로 통일하고 resourcePrefix 를 걸기로 정해 놓았다. 신규 키를 무접두로 만들면 그 이슈 대상만 늘어나므로 처음부터 규약을 따른다. 기존 무접두 키의 리네임은 하지 않는다 — #1079 의 일괄 처리 몫이고 지금 손대면 충돌한다.
참고
- refactor(timeletter,setting): contentDescription 하드코딩 27건 리소스화 — 두 모듈 다 접근성 문자열 리소스가 0건 #1470 — 같은 성격의 timeletter · setting 27건 (koongmai)
- refactor(home): 주간 요약 그리드 contentDescription 하드코딩 1건 — 값도 영어라 함께 판정 #1471 — home 1건 (Sadturtleman)
- 리소스 네이밍을 afternote_ 프리픽스로 통일 — #1066 착륙 후 잔여 (#1071 실행분) #1079 — afternote 리소스
afternote_프리픽스 통일 (신규 키 네이밍 근거) - refactor(core): core:ui 문자열 리소스 2건이 참조 0건 — 같은 문구가 하드코딩·feature 재정의로 갈라져 밀려남 #1069 — core:ui 문자열이 feature 재정의로 갈라진 건 (closed). 이 이슈가 찾은 «있는데 미사용» 4건이 같은 축이다
- 수신자 열람 흐름 23개 파일이 afternote 모듈 리소스를 차용 — 수신자 전용 87개가 남의 소유, #926(홈) 밖 잔여 전량 #1066 · refactor(afternote): 수신 애프터노트 화면 15파일을 afternote 모듈 receiver 패키지로 (#275 초과 실행분 복원) #1461 — receiver 파일의 afternote 리소스 차용 정리 / afternote 모듈 이전
완료 조건
- 33건 전부 리소스 참조 또는 (장식이면)
null로 전환 - 이미 있는 리소스는 신설하지 말고 연결
- 신규 키는
afternote_프리픽스 준수 -
ktlintCheck·:app:compileDebugUnitTestKotlin·:app:compileDebugAndroidTestKotlin통과 - 결합 문구(건수 문장)의 공백 보존을 기존 테스트로 확인
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
area:afternote애프터노트 기능 영역애프터노트 기능 영역refactor동작 변경 없이 코드 구조·책임·경계를 개선하는 작업동작 변경 없이 코드 구조·책임·경계를 개선하는 작업
Activity
[-]refactor(afternote): 담당 모듈 contentDescription 하드코딩 6건 리소스화 — 「영상 재생」은 리소스가 있는데 미사용[/-][+]refactor(afternote): 담당 모듈 화면 노출 문자열 33건 리소스화 — 절반이 「이미 있는 리소스의 미사용」[/+]fix(afternote): 람다 밖으로 문자열 리소스를 올려 Lint 오류 해소 (#1469)