- 0
- 21 단어
안녕하세요 케이입니다.
텔레그램 뉴스봇을 만들다 보면 잘될 때보다 안 될 때가 더 공부가 되는 것 같습니다.
저도 처음에는 오류가 나면 코드 전체를 다시 쳐다봤습니다.
그런데 코드가 길어질수록 어디가 문제인지 찾기가 더 어려워졌습니다.
그러다가 Google Apps Script에 있는 실행 기록을 제대로 보기 시작했습니다.
처음에는 개발자들이 보는 복잡한 메뉴라고 생각했는데 실제로는 저 같은 초보자한테도 꽤 유용했습니다.
실행 기록은 코드가 실제로 움직였는지 보여줬습니다
텔레그램에서 메시지를 보냈는데 답장이 없다면 크게 두 가지를 생각할 수 있었습니다.
아예 코드까지 메시지가 도착하지 않았거나
코드는 실행됐는데 중간에 오류가 났거나
실행 기록을 보면 이 둘을 구분하기 쉬웠습니다.
제가 메시지를 보낸 시간에 실행 기록이 있다면 코드가 뭔가 실행되기는 했다는 뜻이었습니다.
실패한 실행을 눌러봤습니다
오류가 발생하면 실행 기록에 실패 표시가 나옵니다.
그걸 눌러보면 어떤 함수에서 오류가 났는지 확인할 수 있었습니다.
예를 들어 제가 변수 이름을 잘못 입력했다면 is not defined 같은 문장이 나오는 경우가 있었습니다.
처음에는 영어 문장 전체를 해석하려고 했는데 굳이 그럴 필요는 없었습니다.
오류 메시지에서 변수 이름 하나만 봐도 어느 부분에서 문제가 있는지 찾는 데 도움이 됐습니다.
줄 번호가 상당히 도움이 됐습니다
오류 메시지에는 코드 몇 번째 줄에서 문제가 발생했는지 표시되는 경우가 있습니다.
이걸 알고 나서는 오류가 날 때마다 코드 전체를 처음부터 읽지 않았습니다.
예를 들어 line 87처럼 나오면 87번째 줄 근처에서 최근 수정한 부분부터 확인했습니다.
이것만으로도 오류 찾는 시간이 많이 줄었습니다.
Logger도 사용해봤습니다
코드가 실행되기는 하는데 제가 원하는 값이 제대로 들어오는지 궁금한 경우도 있었습니다.
그래서 Logger.log()라는 기능을 사용해봤습니다.
예를 들어 검색어가 제대로 들어오는지 확인하고 싶다면
Logger.log(text);
라고 넣을 수 있습니다.
현재 뉴스 검색 상태가 제대로 저장됐는지 확인하고 싶다면
Logger.log(mode);
처럼 사용할 수 있었습니다.
저는 이것을 코드 중간에서 현재 값을 잠깐 확인하는 메모 정도로 이해했습니다.
검색 결과 개수도 확인해봤습니다
뉴스 API에서 실제로 몇 개가 들어오는지도 확인해봤습니다.
Logger.log(items.length);
이렇게 하면 검색된 뉴스 개수를 확인할 수 있습니다.
뉴스가 안 오는 상황에서 이 값이 0이라면 검색 자체에 결과가 없는지, 필터에서 모두 빠진 건지 생각해볼 수 있었습니다.
반대로 뉴스가 여러 개 들어오는데 텔레그램에는 아무것도 안 간다면 그 이후 코드에 문제가 있다는 식으로 범위를 줄일 수 있었습니다.
한 번에 하나씩 수정했습니다
저는 처음에 오류가 하나 보이면 이것저것 동시에 수정했습니다.
그러면 어느 수정 때문에 해결됐는지 알 수 없었습니다.
지금은 한 부분만 수정하고 다시 실행합니다.
그리고 실행 기록을 다시 봅니다.
시간은 조금 걸리는 것 같아도 이 방식이 결과적으로 훨씬 덜 헷갈렸습니다.
실행 기록을 보기 시작하니 코드가 조금 덜 무서워졌습니다
코딩을 모르니까 처음에는 오류가 뜨면 막연했습니다.
하지만 어떤 함수가 실행됐고, 어느 줄에서 멈췄고, 어떤 값이 들어왔는지 조금씩 확인할 수 있게 되니까 문제가 훨씬 구체적으로 보였습니다.
개발을 배웠다고 할 수준은 아니지만 적어도 어디서부터 확인해야 할지는 조금 알게 됐습니다.
다음에는 제가 실제로 꽤 오래 헷갈렸던 문제를 정리해보려고 합니다.
분명 코드를 수정했는데 텔레그램 봇에서는 예전 기능 그대로 움직이는 상황입니다.