훌륭한 API의 공통점은 무엇입니까? [닫은]


15

API를 훌륭하게 만드는 훌륭한 API는 무엇입니까? 나는 "한 가지 일을 잘해라"라는 진언을 고수하는 것이 좋은 징조이며 문제 영역에 대한 좋은 매핑이 중요하다고 생각하지만 훌륭한 API는 무엇을 공통적으로 갖고 있습니까?


1
"훌륭한 API"를 나열 해 주시겠습니까? 개인적으로 나는 정기적으로 Qt에 긍정적으로 놀랐습니다.
BenjaminB

시나 웹 응용 프로그램 프레임 워크는 내가 가장 좋아하는 API입니다. 그것은 한 가지 일을 잘합니다.
dodgy_coder 2016 년

답변:


17

API를 위해서만 새로운 어휘를 추가하지 않도록주의해야합니다. 내가 가장 좋아하는 API는 이미 이해하고있는 어휘로 설명합니다. 그 라인을 따라 :

작성중인 것 위에 너무 많은 추상화를 추가하지 마십시오. 간단하게 유지하십시오.

나는 이미 약 6 개의 추상화 계층에 대해 생각해야합니다. 여분의 레이어에 대해 생각하게하지 마십시오. 나의 최종 목표에 가치를 부여하지 않을 많은 새로운 것을 배우지 마십시오. 예를 들어, 언어 파일 형식과 다르게 작동하는 특수 파일 클래스는 사용하지 않는 것이 좋습니다. 적어도 당신의 인터페이스에서 일반적으로 받아 들여지는 방식을 고수하거나 악화 시키십시오.

구체적인 아이디어를 고수

예를 들어 MVC 프레임 워크의 "모델"부분이 데이터베이스의 프론트 엔드라는 사실을 숨기려고하지 마십시오. "데이터베이스"를 둘러싼 잘 알려진 어휘를 활용하십시오. 외래 키가 무엇인지 알고 있습니다. 행과 열이 무엇인지 알고 있습니다. 이 용어로 나에게 이야기하십시오.

필수 지식을 추출하지 마십시오

구체적인 아이디어로 작업하는 것과 비슷합니다. 우리가 데이터베이스에서 파일이나 데이터베이스 또는 행을 처리한다는 사실을 숨기지 마십시오. 나는 이것들을 알고 있습니다. List와 같은 컨테이너를 다루는 경우 일반적인 작업의 알고리즘 복잡성을 알아야 할 가능성이 큽니다. "링크 된 목록"또는 "배열"이라고 말하면이를 단순화 할 수 있습니다. 방대한 아이디어가 갑자기 당신이하고있는 일에 영향을 미치게되고 갑자기 모든 것이 합리적 일 것입니다. 문제에 적용 할 풍부하고 유용한 용어 집합을 이미 제공 할 때 배워야 할 아이디어를 직접 만들지 마십시오.

어휘에 필요한 용어 수를 줄입니다

API를 사용하여 모든 유형의 이미지 파일을 여는 경우 pngs vs gifs vs jpgs에 대해 많이 생각할 필요가 없습니다. 당신은 저를 위해 그렇게 할 것입니다. 내 능력이 아니라 핵심 역량입니다. 나는 당신이 나를 위해 이것을 할 마법이 있다는 것을 모호하게 이해합니다.


10

유용한 API는 다음과 같습니다.

  • 간결하고 철저한 문서. 작업을 구현하는 방법을 검색하는 경우 몇 분 내에 API에 기능이 있는지 확인할 수 있습니다. 이것은 텍스트의 간결성과 자원의 레이아웃에 의해 달성됩니다. 이 문서는 사용 방법 에 대한 예를 제공 하며 독자에 대한 가정도하지 않습니다.
  • 크고 활동적인 커뮤니티. 포럼, IRC 채널, 메일 링리스트 등을 찾은 활동적인 참가자들이 새로운 사람들을 기꺼이 도와 주려고 할 때 나는 쇠약 해졌습니다. 나는 이것이 일반적으로 더 큰 프로젝트의 경우이지만, 여전히 노력해야 할 것임을 이해합니다.
  • 일관성. 실제로있을 때 사용 하는 API를, 나는 메소드를 호출하거나, 그 메소드가 발견 어떤 식 으로든 충격을하지 않으려 X는 API의 나머지 부분으로 규칙 세트는 완전히 다르다.

일관성 은 아니요 여야합니다. 한가지 문서 2 위
트리 코더

일관성은 언어에도 적용됩니다. PHP와 JavaScript를 싫어하는 이유는 주로 일관성이 부족하기 때문입니다.
dodgy_coder 2016 년


1
  • 한 가지 일을 잘 해내십시오.
  • 사용하기 쉽고 오용하기가 어렵습니다.
  • 확장하기 쉽습니다.
  • 잘 기록 된.
  • 일관된 스타일.

0

이 질문은 NetBeans 팀의 Jaroslav Tulach의 "실용적인 API 디자인 : Java 프레임 워크 설계자 고백"에서 다루고 있습니다.


-1

가장 간단한 유용한 인터페이스와 좋은 명명 규칙.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.