
17일차에서는 기능이 늘어나며 복잡해진 코드를 파일별로 정리합니다. 지금까지 빠르게 기능을 붙였다면, 오늘은 유지보수하기 쉬운 구조로 다듬는 날입니다. 파일 분리와 역할 분리를 해두면 이후 수정 속도와 안정성이 크게 좋아집니다.
특히 초보자에게 리팩토링은 "어려운 최적화"가 아니라 코드를 읽기 쉬운 상태로 정돈하는 습관이라는 점이 중요합니다.
1. 오늘 만들 기능 소개
오늘 목표는 HTML, CSS, JavaScript 파일을 역할 중심으로 정리하고, 중복 코드와 길어진 이벤트 로직을 함수 단위로 분리하는 것입니다. 기능 추가는 잠시 멈추고 구조를 개선해 "고치기 쉬운 웹앱"으로 바꿉니다.
2. AI에게 요청할 프롬프트
AI에게 현재 파일 구조와 원하는 정리 기준을 같이 주면 효과적입니다.
하루 관리 웹앱 17일차 리팩토링 작업이야.
현재 index.html, style.css, script.js를 유지하면서,
script.js의 중복 코드를 함수로 분리하고 이름을 읽기 쉽게 정리해줘.
기능은 바꾸지 말고 구조만 개선하는 방향으로 수정안을 제안해줘.
3. 코드 작성과 실행 과정
먼저 `script.js`에서 공통 동작(요소 선택, 저장 호출, 렌더링)을 함수로 묶습니다. 이벤트 등록 코드는 하단에 모으고, 데이터 처리 로직은 상단 함수 영역으로 분리하면 읽기 쉬워집니다. CSS도 컴포넌트별 블록(레이아웃, 카드, 버튼, 상태 클래스)로 구획을 나눠 정리합니다.
| 파일 | 정리 내용 | 효과 |
|---|---|---|
| index.html | 구조/섹션 id 명확화 | DOM 선택 안정화 |
| style.css | 스타일 블록 재배치 | 수정 범위 파악 용이 |
| script.js | 중복 로직 함수화 | 버그 감소, 확장 용이 |
4. 코드 이해하기
오늘 핵심은 "기능 동일, 구조 개선"입니다. 리팩토링에서는 동작 결과가 바뀌면 안 되므로, 작은 단위로 나눠 수정하고 매 단계마다 브라우저에서 확인하는 방식이 안전합니다.
좋은 리팩토링은 코드 줄 수보다 의도를 빨리 읽을 수 있는가로 판단합니다. 함수명과 변수명을 명확히 정리하는 것만으로도 유지보수 비용이 크게 줄어듭니다.
5. 오늘 만든 내용 정리
오늘은 기능을 추가하지 않고 코드 구조를 정리해 안정성을 높였습니다. 이제 다음 기능을 붙일 때 충돌 위험이 줄고, 에러 발생 시 원인 추적도 쉬워졌습니다. 다음 18일차에서는 앱 이름과 브랜딩을 정해 완성도를 더 끌어올리겠습니다.
6. 자주 묻는 질문
Q1. 리팩토링 후 갑자기 기능이 안 됩니다.
함수 분리 과정에서 호출 순서가 바뀌었을 가능성이 큽니다. 변경 전/후를 비교해 이벤트 등록 위치와 초기화 함수 호출 시점을 확인하세요.
Q2. 변수명을 바꿨더니 에러가 나요.
참조되는 모든 위치가 함께 수정됐는지 확인해야 합니다. 부분 변경은 `undefined` 오류의 주요 원인입니다.
Q3. 어디까지 정리해야 할지 모르겠어요.
중복 제거, 함수 분리, 명확한 이름 부여까지가 1차 목표로 충분합니다. 과도한 구조 변경은 다음 단계에서 천천히 진행해도 됩니다.
7. 다음 단계로 이어가기
'바이브코딩 HTML 웹앱 20일 챌린지' 카테고리의 다른 글
| [바이브코딩 HTML 웹앱 20일 챌린지] 19일차 - GitHub Pages로 웹앱 배포하기 (0) | 2026.05.17 |
|---|---|
| [바이브코딩 HTML 웹앱 20일 챌린지] 18일차 - 내가 만든 앱에 이름 붙이기 (0) | 2026.05.16 |
| [바이브코딩 HTML 웹앱 20일 챌린지] 16일차 - 모바일에서도 보기 좋은 화면으로 바꾸기 (0) | 2026.05.14 |
| [바이브코딩 HTML 웹앱 20일 챌린지] 15일차 - 할 일을 검색하고 상태별로 걸러보기 (0) | 2026.05.13 |
| [바이브코딩 HTML 웹앱 20일 챌린지] 14일차 - 눈이 편한 다크모드 추가하기 (0) | 2026.05.12 |