피드로 돌아가기
A BMI Calculator That Shows Both JASSO and WHO Categories, Because They Disagree
Dev.toDev.to
Frontend

Vanilla JS 기반 다중 기준 BMI 계산기 설계 및 경계값 검증

A BMI Calculator That Shows Both JASSO and WHO Categories, Because They Disagree

SEN LLC2026년 4월 12일7beginner

Context

단일 기준(WHO)만 제공하는 기존 BMI 계산기의 한계로 인한 인종별 신체 특성 반영 부족 문제 발생. 특히 아시아인의 내장지방 축적 특성을 반영한 JASSO 기준과 WHO 기준의 상이한 해석 차이를 동시에 제공하는 구조 필요.

Technical Solution

  • Guard Clause 도입을 통한 NaN, Infinity 및 0 이하 값의 입력 예외 처리로 런타임 에러 방지
  • Math.round를 활용한 소수점 첫째 자리 반올림 처리로 toFixed의 String 반환으로 인한 다운스트림 비교 연산 오류 제거
  • Category 데이터 구조를 {id, ja, en} 객체 형태로 설계하여 로컬라이징 텍스트와 비즈니스 로직(CSS 스타일링 및 상태 판별)을 분리
  • BMI 25.0 지점의 기준 차이(JASSO: Obesity class 1 vs WHO: Overweight)를 명확히 구분하는 분기 로직 구현
  • Node.js test runner를 이용한 11가지 테스트 케이스 수행 및 24.9 → 25.0 경계값 전이 검증으로 로직 무결성 확보
  • Zero Dependency 기반의 Vanilla JS 설계로 80라인 내외의 고효율 경량 로직 구성

- UI 텍스트에 의존하지 않는 Machine-readable ID 기반의 상태 관리 체계 구축 여부 확인 - 부동 소수점 연산 결과의 타입 변환(String vs Number)이 후속 연산에 미치는 영향 검토 - 도메인 특성에 따른 상이한 표준(Standard) 존재 시, 이를 추상화하여 다중 제공하는 인터페이스 설계 고려 - 경계값(Boundary Value) 분석을 통한 테스트 케이스 작성으로 조건문 연산자(<, <=) 오류 사전 차단

원문 읽기