훌륭한 API란 무엇이라고 생각하십니까
훌륭한 API 설계는 명확하고 기억하기 쉬워야 합니다.
읽기 쉽고, 올바르면서, 효율적인 그리고 사용하는 개발자에게 친화적이어야 합니다.
나는 이러한 것들이 API를 사용하는 라이브러리 개발자들의 최우선 요구 사항이라고 생각한다.
나는 API 설계 측면에서 이걸 "first order"라고 부른다.
코드 중 일정 부분은 타협점을 찾고 우선순위를 정해야 하지만, 적어도 API는 문제가 없다고 믿고쓴다.
그러나 화성에 로봇을 보내는 시대가 오지 않는 이상, 시간이 지나면 코드는 변경될 것이다.
그리고 그건 API를 사용하는 개발자도 마찬가지이다.
내가 아는 훌륭한 API 설계자는 가독성 측면에서만 "first order"를 항상 생각하지 않는다.
시간이 지날수록 코드에서 API를 어떻게 사용하는가 까지도 API 설계 측면에서 생각한다.
이걸 나는 "second order"라고 부른다.
필수 코드의 조그마한 변화는 모든 코드가 동작하지 않도록 할 수 있다.
훌륭한 API들은 사용자가 API 일부 코드를 바꾸는 것까지 예측한다.
복사하고 붙여넣고, 이름을 다시 지어봐라.
특별한 코드를 일반적이고 재사용 가능하게 만들어라.
추상화된 코드를 구체적으로 바꾸어라.
코드를 추가하고 병목 현상을 최적화 해보아라.
일부 코드를 버리고 아예 새로 시작해봐라.
실수해봐라.
원인과 결과를 분석하며, 버그를 수정해라.
고친것은 다시봐라.
훌륭한 API는 좋은 사용경험 뿐만 아니라, 도움이 된다.
훌륭한 API는 변화에 최적화되있다.
원문 - Optimized for Change