상황
한 레코드의 sources 배열에 항목이 여러 개 있었다. 1,107건이 그랬다.
새 기능(묶음 상품)을 설계하면서 "여러 개니까 이게 묶음이겠네" 로 읽을 뻔했다. 실제로는 대체 공급처 목록이었다.
★★ 그렇게 읽었으면 1,107건에 잘못된 발주가 나갔다.
해법 — 형태가 아니라 의미로 필드를 나눈다
{"is_set": true,
"set_items": [...], // 묶음 구성품
"sources": [...]} // 대체 공급처
둘 다 배열이지만 이름이 다르고, 소비하는 코드가 다르다. 플래그가 켜져 있고 전용 필드가 있을 때만 묶음으로 처리한다.
★ "여러 개"라는 형태가 같다고 의미가 같은 게 아니다.
★★ 쓰지 않을 기능의 구조를 미리 넣은 이유 — 나중에 넣으면 기존 1,107건을 재해석해야 하고, 그 순간 혼동이 난다. 구분은 값이 적을 때 박아둔다.