Computer >> 컴퓨터 >  >> 프로그래밍 >> Ruby

일부러 코드를 망가뜨려 보세요 — API 에러를 두려워하지 않는 개발자의 학습법

API 문서는 API의 사용 방법을 알려줍니다. 하지만 문제가 생겼을 때는 대부분 혼자 해결해야 합니다. 에러 메시지는 불완전하거나, 오해를 불러일으키거나, 아무런 도움이 되지 않는 경우가 많죠. NoMethodError: undefined method '[]' for nil:NilClass 같은 메시지를 보고 도대체 무엇부터 해야 할지 막막하기만 합니다.

API, 프레임워크, 라이브러리를 배울 때는 모든 것이 순조롭게 흘러갈 때의 사용법만 익혀서는 안 됩니다. 에러가 반환되었을 때 어떻게 대응해야 하는지도 함께 파악해야 합니다.

어떻게 코드를 망가뜨릴까?

사용 중인 API에 문제가 생겼을 때 무엇을 해야 하는지 배우는 가장 쉬운 방법이 있습니다. 바로 직접 망가뜨려 보는 것입니다!

예를 들어 다음과 같은 시도를 해볼 수 있습니다:

  • 잘못된 타입의 데이터 전달하기. String 대신 심볼(Symbol)을 넘기거나, Array 대신 String이나 Hash를 넘기는 식으로 말입니다.

  • 불완전한 데이터 전달하기. nil, 일부 필드가 비어 있는 해시, 방금 초기화만 한 객체 등을 넘겨보세요.

  • 네트워크 접근이 필요한 API라면 WiFi를 끄거나 네트워크 케이블을 뽑아보세요. 단순히 타임아웃이 걸리는지, 아니면 접속하지 못한 서비스를 명확히 알려주는지 확인할 수 있습니다.

  • 블록을 전달할 수 있는 API라면 블록 안에서 예외를 던지거나 잘못된 타입의 데이터를 반환해 보세요.

훌륭한 API는 무엇이 잘못되었는지 알려줍니다. 더 뛰어난 API는 그것을 어떻게 고칠지까지 알려주죠. 하지만 대부분의 경우 마주하게 되는 것은 Ruby의 NoMethodError, 예상치 못한 nil, 혹은 그보다 더 나쁜, 완전히 기괴한 반환값들입니다.

왜 굳이 코드를 망가뜨릴까?

이 연습은 결코 나쁘지 않습니다. 오픈소스 젬(gem)을 다룬다면, 예상치 못한 동작이 어디에서 비롯되었고 발생했는지 충분한 시간을 들여 이해할 수 있습니다. 디버깅과 약간의 코드 리딩만으로도 라이브러리나 API가 내부적으로 어떻게 작동하는지 많은 것을 배울 수 있습니다.

NoMethodError의 발생 지점을 찾았다면 한 단계 더 나아갈 수 있습니다. 다음에 실제로 같은 문제를 겪을 사람을 위해 에러 메시지 자체를 고쳐보는 것입니다! 사소한 에러 메시지 수정은 훌륭한 오픈소스 기여이자 부담 없는 풀 리퀘스트가 됩니다. 그리고 Ruby 생태계 전체를 모두에게 조금 더 좋은 곳으로 만듭니다.

클로즈드 소스 REST API라 해도 이 연습에서 얻는 것이 분명히 있습니다. API에서 발생할 수 있는 다양한 에러를 미리 확인해 두면, 실제 운영 환경에서 에러를 만났을 때 문제를 훨씬 빠르고 쉽게 해결할 수 있습니다.

주변 코드의 에러를 보고 수정하는 데 익숙해지면, 깨진 코드를 하나의 풀어낼 퍼즐로 인식하게 됩니다. 화면에 예외와 백트레이스가 쏟아져도 자동으로 움츠러들지 않고, 대신 작업 중인 시스템을 더 깊이 이해할 기회로 받아들이게 됩니다.

마지막으로, 코드가 깨져도 언제든 다시 조립할 수 있다는 확신이 생깁니다. 새로운 라이브러리와 API를 시도하는 자신감이 높아지고, 그 과감함은 새로운 것을 배우는 속도마저 끌어올려 줍니다.