Overreacted

변화에 최적화 되어 있습니다.

2018년 12월 12일 • ☕️ 1 min read

무엇이 정말 좋은 API 를 만들까요?

좋은 API 디자인은 기억하기쉽고 명백합니다. 가독성이 좋고, 정확하며 성능이 좋은 코드를 작성하도록 독려하여 개발자들이 쉽게 성공적인 코드를 작성하도록 합니다.(원문에서는 fall into pit of success 라고 표현)

저는 이 디자인요소를 “첫번째” 라고 부릅니다. 왜냐하면 Library 개발자라면 첫번째로 집중해야 하는 것이니까요. 당신은 아마도 이런 가치들을 다른것과 타협하고 교환해야 할 수도 있습니다. 하지만 최소한 이것을 마음속에 꼭 염두에 두어야 합니다.

하지만, 당신이 화성에 로버를 보내는게 아니고서야, 당신의 코드는 수시로 바뀔 것 입니다. 그에 따라 당신의 코드 API를 사용하는 사람들의 코드도 바뀌고요.

제가아는 정말 최고의 API 디자이너들은 위의 가독성과 같은 “첫번째” 디자인 요소에 멈춰있지 않습니다. 그들은 첫번째 만큼의, 혹은 더한 노력을 제가 “두번째”라고 부르는 API 디자인 요소에 들입니다. 바로 “이 API 를 이용하는 코드가 어떻게 발전해 나갈것인가” 입니다.

아무리 잘 짜여진 간결한 코드도 아주 작은 요구사항에 무너져 내릴 수 있습니다.

정말 좋은 API들은 그것을 예측합니다. 그들은 당신이 코드를 옮기고, 복사 붙여넣기를 하고 이름을 바꿀 것을 예상합니다. 특별한 케이스들을 하나의 일반적이고 재사용 가능한 helper 로 통합해둡니다. 추상화 되어있는 것들을 다시 각각의 케이스로 분리하기도 합니다. Hack 을 넣어 문제를 해결하기도 하고, 병목 현상을 최적화 합니다. 어떤 부분은 버리고 새롭게 다시 만듭니다. 실수를 하고, 원인과 결과를 살펴봅니다. 버그를 고치고, 고친 부분을 리뷰 합니다.

정말 좋은 API 들은 당신이 쉽게 성공할 수 있게 할 뿐아니라, 당신이 거기에 머물 수 있도록 합니다.

그들은 변화에 최적화 되어 있습니다.