코딩기록

JS) js 코드 작성 순서 / 예시 - 별점등록 본문

프론트

JS) js 코드 작성 순서 / 예시 - 별점등록

뽀짝코딩 2024. 12. 18. 13:48
728x90

js 코드를 작성할때는 구조화된 단계적 접근이 중요하다.

 

일반적으로는 기능 정의 → DOM 조작 → 핵심 로직 → 이벤트 처리 → UI 업데이트 순으로 코드가 작성된다.

 

 

 

JavaScript 코드를 짤 때 일반적인 작성 순서:

  1. 목표 정의 및 요구 사항 분석:
    • 먼저 코드가 해결하고자 하는 문제를 명확히 정의합니다.
    • 어떤 기능을 만들지, 그 기능을 어떻게 구현할지에 대해 설계하고 계획을 세웁니다.
  2. DOM 요소 선택 및 초기 설정:
    • DOM을 조작할 요소들을 선택합니다. 예를 들어, querySelector나 querySelectorAll로 HTML 요소를 선택합니다.
    • 필요한 초기 상태나 설정을 해줍니다. 예를 들어, data-* 속성을 읽거나 초기화 작업을 합니다.
  3. 핵심 로직 구현:
    • 주요 로직을 구현합니다. 예를 들어, 클릭 이벤트 핸들러, 애니메이션 처리, 계산 로직 등을 작성합니다.
    • 이 단계에서 대부분의 기능 구현이 이루어집니다.
    • 함수 단위로 모듈화하여 재사용성을 고려할 수 있습니다.
  4. 이벤트 핸들러 설정:
    • 이벤트 리스너를 설정합니다. 사용자 상호작용(클릭, 마우스오버 등)을 처리할 수 있도록 이벤트 핸들러를 추가합니다.
    • 이벤트가 발생할 때 어떤 행동을 할지 정의합니다.
  5. 스타일 및 UI 업데이트:
    • UI를 변경하는 로직을 추가합니다. DOM을 수정하거나 스타일을 변경할 때 사용합니다.
    • 예를 들어, 버튼 클릭 시 색상을 바꾼다거나, 별점을 하이라이트하는 등의 작업입니다.
  6. 에러 처리 및 예외 처리:
    • 예상치 못한 상황에서 오류를 방지하고, 예외가 발생할 경우 어떻게 처리할지 결정합니다.
    • try-catch 블록 등을 사용하여 예외 처리를 할 수 있습니다.
  7. 디버깅 및 테스트:
    • 작성한 코드를 디버깅하고 테스트합니다. 콘솔 로그를 이용해 코드를 추적하고, 브라우저에서 테스트를 수행하여 버그를 수정합니다.
  8. 최적화 및 리팩토링:
    • 코드가 정상적으로 작동하는 것을 확인한 후, 더 효율적이고 깔끔하게 리팩토링합니다.
    • 중복 코드를 제거하고, 성능을 고려하여 최적화합니다.

방금 예시 코드의 작성 순서:

  1. DOM 요소 선택:
    • document.querySelectorAll('.star-rating') 등으로 DOM 요소를 선택합니다.
  2. 스타일 및 초기화:
    • 별점 시스템을 구성하기 위해 별 아이콘을 동적으로 추가합니다.
    • 스타일을 동적으로 추가하는 부분도 포함됩니다. (link 태그 추가)
  3. 핵심 로직 구현:
    • createStarRating 함수에서 별을 생성하고, 상태(클릭된 별점, 호버된 별)를 업데이트하는 로직을 구현합니다.
  4. 이벤트 핸들러 설정:
    • mouseover, mouseout, click 이벤트 리스너를 설정하여 사용자 상호작용을 처리합니다.
  5. UI 업데이트:
    • 별점 UI를 실시간으로 업데이트하여 사용자가 별점을 클릭하거나 호버할 때 반영됩니다.
  6. 이벤트 전파:
    • rating-change 이벤트를 발생시켜 다른 컴포넌트에 별점 변경을 알립니다.

 

 

 


 

세분화 해서 별점 등록 코드의 코드 작성 순서를 적었다.

 

1. 요구 사항 분석

  • 구현할 기능과 동작을 명확히 정의합니다.
    • 예: "별점을 표시하고, 클릭 시 선택된 별점을 고정하며, 별점이 변경되면 이벤트를 발생시킨다."
  • 입력(HTML 구조)과 출력(화면 표시, 이벤트 처리)을 명확히 이해합니다.

2. HTML 및 CSS 구조 파악

  • HTML: DOM 요소의 구조를 확인하고 필요한 데이터를 추출합니다.
    • 예: .star-rating 컨테이너의 data-max-rating 속성.
  • CSS: 필요한 시각적 효과를 제공하는 스타일 클래스를 정의합니다.
    • 예: .star 클래스와 filled 상태를 구분.

3. 계획 수립 및 주요 함수 설계

  • 기능을 작은 단위로 나눕니다. 각 단위는 독립적인 함수를 만듭니다.
    • 예:
      1. 별 생성 함수: createStars($container, maxRating)
      2. 상태 업데이트 함수: updateStars(stars, rating)
      3. 이벤트 리스너 함수: attachEventListeners(...)
  • 코드 흐름을 설계합니다.
    • 데이터를 초기화 → 동작 추가 → UI 업데이트 → 사용자 입력 처리.

4. DOM 접근 및 데이터 초기화

  • HTML에서 동작할 컨테이너 요소를 가져옵니다.
    • 예: document.querySelectorAll('.star-rating').
  • 필요한 데이터를 읽고(예: data-max-rating), 초기 상태를 설정합니다.

5. UI 동적 생성

  • 필요한 HTML 요소(예: 별)를 동적으로 생성합니다.
    • 예: document.createElement('span')를 사용하여 별 생성.
  • 생성된 요소를 DOM에 추가합니다.

6. 상태 관리 및 동작 구현

  • 별점의 상태를 관리할 변수를 정의합니다.
    • 예: let currentRating = 0.
  • 상태를 기반으로 UI를 업데이트하는 로직을 구현합니다.
    • 예: updateStars()로 별의 시각적 상태 변경.

7. 이벤트 처리

  • 사용자의 동작(클릭, 마우스 오버 등)을 처리하는 이벤트 핸들러를 작성합니다.
    • 예: mouseenter, mouseleave, click 이벤트.
  • 이벤트 핸들러에서 상태를 변경하고, 변경 사항을 UI와 연결합니다.

8. 이벤트 디스패치 및 외부와의 연결

  • 특정 상태 변경 시 외부에서도 이를 감지할 수 있도록 이벤트를 디스패치합니다.
    • 예: new CustomEvent('rating-change', { detail: currentRating }).

9. 테스트 및 디버깅

  • 모든 동작이 올바르게 작동하는지 확인합니다.
    • 마우스 오버, 클릭, 상태 업데이트 등.
  • 브라우저 개발자 도구를 사용하여 DOM 구조와 이벤트를 확인합니다.

10. 최적화 및 코드 정리

  • 중복된 코드가 없는지 확인하고 함수화합니다.
  • 필요한 부분만 모듈화하여 다른 곳에서도 재사용 가능하도록 구성합니다.

예시 코드 작성 순서

  1. DOM 요소 가져오기:
    const $containers = document.querySelectorAll('.star-rating');
  2. 데이터 초기화:
    const maxRating = parseInt($container.getAttribute('data-max-rating')) || 5;
  3. UI 생성:
    const stars = createStars($container, maxRating);
  4. 상태 업데이트:
    updateStars(stars, currentRating);
  5. 이벤트 리스너 추가:
    attachEventListeners($container, stars, setRating, updateStars);
  6. CustomEvent 처리:
    const ratingChangeEvent = new CustomEvent('rating-change', { detail: currentRating });

요약

  1. 요구 사항 분석
  2. HTML/CSS 파악
  3. 기능 설계 및 함수 분리
  4. DOM 접근 및 초기화
  5. UI 생성
  6. 상태 관리
  7. 이벤트 처리
  8. 테스트 및 최적화

이 순서를 따르면 논리적이고 확장 가능한 코드를 작성할 수 있습니다. 😊

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형
Comments