API를 훌륭하게 만드는 훌륭한 API는 무엇입니까? 나는 "한 가지 일을 잘해라"라는 진언을 고수하는 것이 좋은 징조이며 문제 영역에 대한 좋은 매핑이 중요하다고 생각하지만 훌륭한 API는 무엇을 공통적으로 갖고 있습니까?
API를 훌륭하게 만드는 훌륭한 API는 무엇입니까? 나는 "한 가지 일을 잘해라"라는 진언을 고수하는 것이 좋은 징조이며 문제 영역에 대한 좋은 매핑이 중요하다고 생각하지만 훌륭한 API는 무엇을 공통적으로 갖고 있습니까?
답변:
API를 위해서만 새로운 어휘를 추가하지 않도록주의해야합니다. 내가 가장 좋아하는 API는 이미 이해하고있는 어휘로 설명합니다. 그 라인을 따라 :
나는 이미 약 6 개의 추상화 계층에 대해 생각해야합니다. 여분의 레이어에 대해 생각하게하지 마십시오. 나의 최종 목표에 가치를 부여하지 않을 많은 새로운 것을 배우지 마십시오. 예를 들어, 언어 파일 형식과 다르게 작동하는 특수 파일 클래스는 사용하지 않는 것이 좋습니다. 적어도 당신의 인터페이스에서 일반적으로 받아 들여지는 방식을 고수하거나 악화 시키십시오.
예를 들어 MVC 프레임 워크의 "모델"부분이 데이터베이스의 프론트 엔드라는 사실을 숨기려고하지 마십시오. "데이터베이스"를 둘러싼 잘 알려진 어휘를 활용하십시오. 외래 키가 무엇인지 알고 있습니다. 행과 열이 무엇인지 알고 있습니다. 이 용어로 나에게 이야기하십시오.
구체적인 아이디어로 작업하는 것과 비슷합니다. 우리가 데이터베이스에서 파일이나 데이터베이스 또는 행을 처리한다는 사실을 숨기지 마십시오. 나는 이것들을 알고 있습니다. List와 같은 컨테이너를 다루는 경우 일반적인 작업의 알고리즘 복잡성을 알아야 할 가능성이 큽니다. "링크 된 목록"또는 "배열"이라고 말하면이를 단순화 할 수 있습니다. 방대한 아이디어가 갑자기 당신이하고있는 일에 영향을 미치게되고 갑자기 모든 것이 합리적 일 것입니다. 문제에 적용 할 풍부하고 유용한 용어 집합을 이미 제공 할 때 배워야 할 아이디어를 직접 만들지 마십시오.
API를 사용하여 모든 유형의 이미지 파일을 여는 경우 pngs vs gifs vs jpgs에 대해 많이 생각할 필요가 없습니다. 당신은 저를 위해 그렇게 할 것입니다. 내 능력이 아니라 핵심 역량입니다. 나는 당신이 나를 위해 이것을 할 마법이 있다는 것을 모호하게 이해합니다.
유용한 API는 다음과 같습니다.
X는 API의 나머지 부분으로 규칙 세트는 완전히 다르다.이 질문은 NetBeans 팀의 Jaroslav Tulach의 "실용적인 API 디자인 : Java 프레임 워크 설계자 고백"에서 다루고 있습니다.