--- kind: REFERENCE slug: say-you-could-not-read-it title: 화면은 못 읽은 것을 없다고 말하지 않는다 topic: failure-drawn-as-absence topicName: 실패를 없음으로 그린다 project: TechLog status: 게시 전 verifiedOn: 2026-09-04 sourceRevision: tech-log@2026-09-02 source: - final/document.md#§10.1 - final/document.md#§17.3 --- # 화면은 못 읽은 것을 없다고 말하지 않는다 목록이나 요약처럼 「비어 있음」이 정상값인 화면에서는 실패와 0건이 같은 모양으로 그려진다. 작성자는 그것을 자기가 아직 쓰지 않은 것으로 읽는다. 못 읽었으면 못 읽었다고 적는다. ## 관계 - **「이 프로젝트에 열린 질문이 없습니다」 — 실제로는 넷이 있었다** 이 규칙의 근거 사건이다. - **한 칸의 실패가 옆 칸을 끌고 내려갔다** 실패가 어디까지 번지는지를 다룬 사건이다. - **매퍼가 null 을 돌려주고 호출부가 걸러 내, 기록이 조용히 사라졌다** 실패가 아니라 항목이 사라진 변종이다. ## 목적 작성자가 「아직 안 썼다」와 「못 읽었다」를 구분할 수 있게 한다. 이 둘이 같은 화면이면 작성자는 다음에 무엇을 할지 정할 수 없다. ## 규칙 ### 1. 요청이 실패하면 실패했다고 적는다 빈 배열로 삼키지 않는다. 0건과 실패는 다른 문구를 쓴다. ### 2. 한 칸의 실패가 옆 칸을 끌고 내려가지 않게 한다 여러 목록을 하나로 묶어 기다리면 한쪽의 실패가 전체를 실패로 만든다. 따로 읽고 실패한 목록에만 적는다. ### 3. 거절만 잡는 처리로는 부족하다 호출이 동기적으로 던지면 그 처리기를 지나지 않는다. 던지는 경로도 잡는다. ### 4. 항목을 걸러 낼 때 걸러 낸 것을 세어 둔다 매퍼가 모르는 종류에 빈 값을 돌려주고 호출부가 거르면, 목록이 한 줄 짧아지는 것 말고는 흔적이 없다. ## 적용 조건 - 목록·요약·카운트처럼 「비어 있음」이 정상값이라 실패와 구분되지 않는 화면을 만들 때 - 작성 도구를 만들 때. 작성자가 자기 작업물과 화면을 대조하므로 오독이 곧바로 작업 판단이 된다 - 한 화면이 여러 목록을 함께 받아 그릴 때 - 매퍼가 모르는 값에 빈 값을 돌려주고 호출부가 그것을 거를 때 ## 예외 - 정말로 0건인 것과 못 읽은 것을 구분할 수 없는 화면이라면 그 구분을 먼저 만든다. 구분 없이 문구만 바꾸면 0건이 실패로 읽힌다. - 읽는 사람이 그 데이터를 만들지 않는 화면 — 공개 조회 — 에서는 실패를 화면 전체의 오류로 다뤄도 된다. ## 예시 - 「이 프로젝트에 열린 질문이 없습니다」가 적혀 있는 동안 그 프로젝트에는 질문이 넷 있었고 공개 사이트에도 나오고 있었다. - 탭 하나를 못 받아도 탭 줄과 나머지 탭은 그대로 그리고, 못 받은 탭에는 못 받았다고 적는다. - 매퍼가 모르는 종류에 빈 값을 돌려주고 호출부가 걸러 내, 질문과 개념이 목록에서 사라졌다.