새 기능을 플러그인으로 구현할 경우, 플러그인 클래스에 명확한 책임을 부여하고 필요에 따라 util 함수를 js/utils.js에 추가합니다. UI 요소는 스킨과 테마 파일에서 스타일을 정의해 재사용성을 높입니다.
새 기능 추가 요청이 들어오면 바로 구현으로 들어가기보다, 먼저 “이 기능은 플러그인으로 충분한가”, “저장 포맷이 바뀌는가”, “보기 화면까지 함께 바뀌는가”, “외부 서비스 의존성이 생기는가”를 따져야 합니다. 이 네 가지 질문을 미리 정리하면 나중에 코어 침범을 줄이고 릴리스 리스크를 크게 낮출 수 있습니다.
새 기능을 넣었다면 코드보다 먼저 문서를 갱신해야 유지보수가 쉬워집니다. 최소한 기능 개요, 관련 파일, 설정 위치, 테스트 포인트, 역호환성 여부, 운영 주의사항까지는 같은 커밋 안에서 정리하는 것을 권장합니다.
새 기능을 플러그인으로 구현할 경우, 플러그인 클래스에 명확한 책임을 부여하고 필요에 따라 util 함수를 js/utils.js에 추가합니다. UI 요소는 스킨과 테마 파일에서 스타일을 정의해 재사용성을 높입니다.
새 기능 추가 요청이 들어오면 바로 구현으로 들어가기보다, 먼저 “이 기능은 플러그인으로 충분한가”, “저장 포맷이 바뀌는가”, “보기 화면까지 함께 바뀌는가”, “외부 서비스 의존성이 생기는가”를 따져야 합니다. 이 네 가지 질문을 미리 정리하면 나중에 코어 침범을 줄이고 릴리스 리스크를 크게 낮출 수 있습니다.
새 기능을 넣었다면 코드보다 먼저 문서를 갱신해야 유지보수가 쉬워집니다. 최소한 기능 개요, 관련 파일, 설정 위치, 테스트 포인트, 역호환성 여부, 운영 주의사항까지는 같은 커밋 안에서 정리하는 것을 권장합니다.
| 이전 | 새 버전 | ||
|---|---|---|---|
| 1 | --- | 1 | --- |
| 2 | title: 새 기능 추가 가이드 | 2 | title: 새 기능 추가 가이드 |
| 3 | document_id: 61-new-feature-guide | 3 | document_id: 61-new-feature-guide |
| 4 | slug: 61-new-feature-guide | 4 | slug: 61-new-feature-guide |
| 5 | target_editor_version: 9.0.0 | 5 | target_editor_version: 9.0.0 |
| 6 | document_type: feature | 6 | document_type: feature |
| 7 | doc_type: feature | 7 | doc_type: feature |
| 8 | target_readers: [초보자, 웹마스터, 개발자, AI agent] | 8 | target_readers: [초보자, 웹마스터, 개발자, AI agent] |
| 9 | importance: High | 9 | importance: High |
| 10 | dependency: Medium | 10 | dependency: Medium |
| 11 | core_type: Feature | 11 | core_type: Feature |
| 12 | stability: [Version-Bound] | 12 | stability: [Version-Bound] |
| 13 | stable_anchor: [] | 13 | stable_anchor: [] |
| 14 | version_bound: [] | 14 | version_bound: [] |
| 15 | related_docs: [] | 15 | related_docs: [] |
| 16 | related_files: [] | 16 | related_files: [] |
| 17 | related_functions: [] | 17 | related_functions: [] |
| 18 | related_classes_modules: [] | 18 | related_classes_modules: [] |
| 19 | related_features: [] | 19 | related_features: [] |
| 20 | related_ui: [] | 20 | related_ui: [] |
| 21 | change_risk: 수정 범위를 넓게 잡으면 관련 기능과 문서 흐름에 영향이 생길 수 있습니다. | 21 | change_risk: 수정 범위를 넓게 잡으면 관련 기능과 문서 흐름에 영향이 생길 수 있습니다. |
| 22 | reading_order: 21 | 22 | reading_order: 21 |
| 23 | summary: 코어 수정 또는 플러그인 방식으로 새 기능을 추가하는 절차를 설명 문서 | 23 | summary: 코어 수정 또는 플러그인 방식으로 새 기능을 추가하는 절차를 설명 문서 |
| 24 | description: 코어 수정 또는 플러그인 방식으로 새 기능을 추가하는 절차를 설명 | 24 | description: 코어 수정 또는 플러그인 방식으로 새 기능을 추가하는 절차를 설명 |
| 25 | tags: [feature, development, guide] | 25 | tags: [feature, development, guide] |
| 26 | version_tag: 9.0.0 | 26 | version_tag: 9.0.0 |
| 27 | maintenance_difficulty: Medium | 27 | maintenance_difficulty: Medium |
| 28 | test_requirement: Medium | 28 | test_requirement: Medium |
| 29 | ai_agent_risk: Medium | 29 | ai_agent_risk: Medium |
| 30 | source_basis: [현재 코드 분석 기반, 웹 참고 자료 기반] | 30 | source_basis: [현재 코드 분석 기반, 웹 참고 자료 기반] |
| 31 | beginner_section_included: true | 31 | beginner_section_included: true |
| 32 | webmaster_section_included: true | 32 | webmaster_section_included: true |
| 33 | developer_section_included: true | 33 | developer_section_included: true |
| 34 | --- | 34 | --- |
| 35 | ## 새 기능 추가 절차 | 35 | ## 새 기능 추가 절차 |
| 36 | 36 | ||
| 37 | 1. **요구 사항 분석**: 어떤 기능이 필요한지, 기존 구조에서 어느 레이어에 속하는지 분석합니다. | 37 | 1. **요구 사항 분석**: 어떤 기능이 필요한지, 기존 구조에서 어느 레이어에 속하는지 분석합니다. |
| 38 | 2. **코어 vs 플러그인 판단**: 기능이 모든 사용자에게 공통적으로 필요하면 코어 수정이 적합하지만, 선택적 기능이라면 플러그인 형태로 구현하는 것이 좋습니다. | 38 | 2. **코어 vs 플러그인 판단**: 기능이 모든 사용자에게 공통적으로 필요하면 코어 수정이 적합하지만, 선택적 기능이라면 플러그인 형태로 구현하는 것이 좋습니다. |
| 39 | 3. **의존성 파악**: 기능이 사용하는 데이터와 API, UI 요소를 파악하고 의존성을 명확히 합니다. | 39 | 3. **의존성 파악**: 기능이 사용하는 데이터와 API, UI 요소를 파악하고 의존성을 명확히 합니다. |
| 40 | 4. **구현 및 테스트**: 코드 작성 후 다양한 시나리오에서 테스트를 수행합니다. | 40 | 4. **구현 및 테스트**: 코드 작성 후 다양한 시나리오에서 테스트를 수행합니다. |
| 41 | 41 | ||
| 42 | ### 코드 구조 제안 | 42 | ### 코드 구조 제안 |
| 43 | 43 | ||
| 44 | 새 기능을 플러그인으로 구현할 경우, 플러그인 클래스에 명확한 책임을 부여하고 필요에 따라 util 함수를 `js/utils.js`에 추가합니다. UI 요소는 스킨과 테마 파일에서 스타일을 정의해 재사용성을 높입니다. | 44 | 새 기능을 플러그인으로 구현할 경우, 플러그인 클래스에 명확한 책임을 부여하고 필요에 따라 util 함수를 `js/utils.js`에 추가합니다. UI 요소는 스킨과 테마 파일에서 스타일을 정의해 재사용성을 높입니다. |
| 45 | 45 | ||
| 46 | ## 새 기능을 넣기 전에 먼저 할 질문 | 46 | ## 새 기능을 넣기 전에 먼저 할 질문 |
| 47 | 47 | ||
| 48 | 새 기능 추가 요청이 들어오면 바로 구현으로 들어가기보다, 먼저 “이 기능은 플러그인으로 충분한가”, “저장 포맷이 바뀌는가”, “보기 화면까지 함께 바뀌는가”, “외부 서비스 의존성이 생기는가”를 따져야 합니다. 이 네 가지 질문을 미리 정리하면 나중에 코어 침범을 줄이고 릴리스 리스크를 크게 낮출 수 있습니다. | 48 | 새 기능 추가 요청이 들어오면 바로 구현으로 들어가기보다, 먼저 “이 기능은 플러그인으로 충분한가”, “저장 포맷이 바뀌는가”, “보기 화면까지 함께 바뀌는가”, “외부 서비스 의존성이 생기는가”를 따져야 합니다. 이 네 가지 질문을 미리 정리하면 나중에 코어 침범을 줄이고 릴리스 리스크를 크게 낮출 수 있습니다. |
| 49 | 49 | ||
| 50 | ## 권장 문서화 절차 | 50 | ## 권장 문서화 절차 |
| 51 | 51 | ||
| 52 | 새 기능을 넣었다면 코드보다 먼저 문서를 갱신해야 유지보수가 쉬워집니다. 최소한 기능 개요, 관련 파일, 설정 위치, 테스트 포인트, 역호환성 여부, 운영 주의사항까지는 같은 커밋 안에서 정리하는 것을 권장합니다. | 52 | 새 기능을 넣었다면 코드보다 먼저 문서를 갱신해야 유지보수가 쉬워집니다. 최소한 기능 개요, 관련 파일, 설정 위치, 테스트 포인트, 역호환성 여부, 운영 주의사항까지는 같은 커밋 안에서 정리하는 것을 권장합니다. |
| 53 | 53 | ||