여둘까 Office Layout TIL 10
저장이 안 됐다
프로젝트 설정에서 이름만 바꾸고 저장 버튼을 눌렀는데 아무 반응이 없었다. Ctrl+S도, 다른 이름으로 저장도 마찬가지였다. 새로고침하고 나니 저장이 됐다. 왼쪽 드래그 동작을 손본 직후라, 드래그랑 저장이 충돌하는 건가 싶었다.
원인을 화면에서 확인할 수 있냐고 물었는데, 원인이 어디에도 안 떴다.
결과를 안 보여 주면 성공도 실패처럼 보인다
파헤쳐 보니 한 가지는 실패가 아니라 성공이었다. 파일을 한 번 저장하고 나면, 그다음부터는 파일 선택창 없이 같은 파일에 조용히 덮어쓴다. 코드로는 완벽한 성공인데 화면에는 아무 변화가 없다. 쓰는 사람 입장에서는 “눌렀는데 아무 일도 없다”와 똑같다.
그래서 화면 아래 상태줄에 「저장 중…」, 「저장됨 · 파일 이름 · 시각」, 「저장 취소됨」을 적게 했다.
기능이 끝나는 지점은 코드가 성공하는 곳이 아니라 쓰는 사람이 결과를 확인하는 곳이다. 조용히 성공하는 경로일수록 표시가 더 필요하다.
오류도 화면에 띄운다
“원인 자체가 안 뜬다”는 말이 그대로 다음 고칠 거리가 됐다. 이 도구를 쓰는 사람이 개발자 도구를 열어 볼 일은 없다. 어딘가 오류가 나면 개발자 도구 안에만 남고 화면은 멀쩡해 보이니, 결국 “눌러도 반응이 없다”로만 전달된다.
그래서 어디서든 처리되지 않은 오류가 나면 상태줄에 그 내용을 띄우게 했다. 다음에 또 안 되면, 적어도 무엇이 안 됐는지는 화면에 남는다.
새로 연 창에서만 드래그가 달랐다
범위 선택을 넣은 직후엔 왼쪽 드래그 두 방향이 다 잘 됐는데, 어느 순간 또 안 됐다. 작은 네모가 잠깐 잡히다가 도면이 통째로 움직였다. 뭐는 되고 뭐는 안 되는 상태였다.
초기 상태를 두 곳에서 정하면 “새로 열었을 때만” 다르다
모드(선택·거리 재기 등)를 바꾸는 함수가 “왼쪽 드래그로 화면을 움직일지”까지 정하고 있었다. 그런데 앱을 처음 켤 때는 그 함수를 한 번도 부르지 않았다. 그러니 캔버스를 만들 때 넣어 둔 옛 초기값(왼쪽 드래그 = 화면 이동)이 그대로 남았다.
모드 버튼을 한 번이라도 누르면 함수가 불려서 고쳐진다. 그래서 쓰다 보면 멀쩡해지고, 새 창을 열면 다시 이상했다. 재현이 들쭉날쭉했던 이유다.
같은 상태를 정하는 곳이 두 군데 — 처음 만들 때의 값, 그리고 모드 함수 — 였고, 둘이 서로 다른 답을 들고 있었다. 처음 만들 때의 값도 모드 함수와 같은 답으로 맞추고, 시작할 때 모드 함수를 한 번 부르게 했다.
상태를 정하는 곳은 하나여야 한다. 둘이면 언젠가 둘이 어긋나고, 그 차이는 “특정 순서로 썼을 때만” 나타나서 찾기가 가장 어렵다.
결국 점검을 부탁했다
이런 일이 며칠 이어지자, 코드를 더 고치기 전에 브랜치(원본을 건드리지 않고 따로 작업하는 갈래)를 나눠 실제 쓰는 사람처럼 기능을 이것저것 눌러 보고 보고해 달라고 했다. 그렇게 화면을 자동으로 눌러 보는 점검이 저장소에 들어왔고, 두 가지 버그가 다 그 점검으로 확인됐다. 이 점검은 이틀 뒤 앱을 나누는 큰 정리(다음 TIL 11)의 안전망이 됐다.