API가 변경되면, 통화와 관련된 엄청난 비용을 가져올 수, 사용자는 모든 관련 부품, 그들을 위해 이러한 작업을 조정할 필요가 추가되어, 모든 코드 호출 문제를 해결해야합니다. 이 하드의 완료 후, 또한 관련 버그를 발견하는 경우, 그 사용자에게 더 큰 타격이다. API가 지속적으로 변경하는 경우, 사용자는 현재의 작업에 영향을 미칠 것 공급자, 자신감을 잃고 잃게됩니다.
그런데 왜 우리는 API를 수정해야합니까? API는 더 아름다워? 위해서는 더 많은 기능을 제공하기 위해? 더 나은 성능을 제공하기 위해? 아니면 그냥 시간을 변경하는 생각? 안정된를 사용하는 것을 선호하지만 너무 펑키 API를 보이지 않는 사용자의 경우이 우리가 API를 개선하지 않는다는 의미는 아니다. API가 나쁜 유지 보수 비용이 점점 더 가져올 때, 나는 그것을 재구성하는 우리 시대라고 생각합니다.
다시 갈 수 있고 다시 할 경우, 너무 좋아 API 내 마음의 종류 어떻게해야합니까?
API를이 우수 여부, 단순히 첫 번째 버전에 따라 판단을 제공하지만, API는 아직도 여전히 매우 잘 유지 여부, 존재 여부, 시간이 지남에 보인다. API 인터페이스 슬롯 케이크 다양한하지만, 다음 사항을 충족해야합니다 사용자에 대한 좋은 API 인터페이스 :
- 잘 문서화 및 기타 디자인 작업과 같은 많은 예제와 복사 - 붙여 넣기 코드를 제공, 당신은 적용해야 : 쉽게 배울 최소 깜짝를 .
- 사용하기 쉬운 : 쉽게 배울 수 복잡한 절차, 복잡한 세부; 유연한 API 등등 필드, 사용자 정의 페이징, 정렬 및 필터링에 의해 정렬 허용한다. 완전한 API는 원하는 기능이 포함되어 있다는 것을 의미한다.
- 오용 어려운 : 자세한 오류 메시지에 대한 일부 사용자는 API가 문서를 읽을 필요없이 직접 사용할 수있는 경험했다.
개발자의 요구 사항은 동일하지 않습니다 :
- 디버깅 또는 수정이 코드를 읽는 데 필요한 경우에만 다시 한 번 코드를 쓸 수 있지만 : 쉽게 읽을 수 있습니다.
- 개발의 용이성 : 인터페이스의 최소화가 적은 클래스뿐만 아니라, 몇 명의 반원을 사용하는 것입니다. 이것은 이해, 메모리를 만들고, 디버깅 API를 변경하는 것이 더 쉽습니다.
위의 사항이 어떻게, 다음과 같은 몇 가지 결론은 다음과 같습니다 :
1, 케이스 디자인에 대한
API를 광범위하게 사용하는 경우,이 API를 사용하여 모든 사용자를 이해하는 것이 불가능하다. 디자이너가 널리 사용되는 API를 설계하고자하는 경우, 우리는 API 라이브러리를 설계하는 방법을 이해하기 위해 사용자의 관점에 서 있어야뿐만 아니라, 어떻게 이러한 API 라이브러리를 설계 할 수 있습니다.
2, 좋은 디자인 아이디어의 사용
그들은 다음과 같은 방법으로 설계 할 수있는 경우 설계 과정에서,이 API는 더 오래 살 것이다
- 사용자 의견을 수집, 사용 사례에 대한 설계, 자신이 사용하는 API 디자인과 합리적인 용이성을 보장하기 위해, 사용자로 모델링
- 다음 요구 사항이 확장 된 형태로 수행 할 수 있는지 확인
- 새로운 요구 사항이 확장 된 형태를 통해 수행 할 수 있기 때문에 초판의 내용을 가능한 한 작은을, 일을 할 수 있도록 적게는 API의 설계 오류를 억제 할 수있는 효과적인 프로그램입니다
- 외부 목록은 사용자 수준의 API 오용으로 알려진에 (섹션 I 참조) 특히 API를 방지하기 위해 API를 사용하여 사용자 오류를 방지하기 위해, 명확한 API 설명서 및 사양을 제공
또한, 다음 목록 일부 특정 설계 방식 :
- 본 방법은 우수한 특성 인
- 방법은 공장 생성자에 우수
- 과도한 상속을 피하십시오
- 최적화 또는 영향 API 코드 재사용을 방지
- 지향 프로그래밍 인터페이스
- 확장 매개 변수가 편리합니다
- 노출을 결정하기 위해 얼마나 많은 인터페이스 구성 요소를 적절한 위치
- 확장 점을 제공
3, 극단적 인 의견을 피하기 위해
API를 설계 할 때, 다음과 같은 점 특히, 어떤 극단적 인 전망을 피하십시오 :
- (API 아름다운 반드시 필요는 없다) 좋은이어야합니다
- (사용자가 이해하는 제대로 오용 API로 완벽하게 상황을 고려, API 디자이너를 API를 사용하는 방법을 어려운 : API를 오용 될 수 있다면, 그것이 악용 될 것이다) API가 올바르게 사용해야합니다
- 간단한이어야합니다 (우리는 항상 복잡한 요구에 직면, API는 모두 더 나은 API를 할 수 있습니다)
- 고성능이어야합니다 (성능은 다른 방법으로 최적화 할 수 있습니다, 그것은 API의 디자인에 영향을 미치지 않습니다)
- 절대적으로 호환 가능해야합니다 (이 문서 호환성을 보장하는 방법을 언급하고있다, 그러나 우리는 아직도 그 실현해야하지만, 일부 드문 경우에 호환이 허용 될 수 발생)
4, 유효한 API 검토
다음과 같이 API 설계가 완료되면, 조심 설계 검토를 통해 갈 필요, 평가의 초점은 다음과 같습니다
- 당신이 사용 사례의 정당성과 완전성을 보장하기 위해, 검토하기 전에 전체 사용 사례를 제공해야합니다, 사례 중심의 사용합니다.
- 일관성, 시스템 디자인 인터페이스의 대칭과 일치 여부, 인터페이스 스타일의 다른 모듈과의 일치 여부를 지정합니다.
- 간단하고 이해하기 쉬운 API 배우고 우리에게 더 많은 문제를주고, API가 오용 될 쉽지 않았다 사용하기 쉽고, 간단해야한다.
- 가능한 한 작은 API, 사용자가 정말 필요로 할 때까지 API가 노출되거나 노출되지 않을 수 있다면, 그 노출되지 않도록 한 다음 공용 인터페이스 늦게도되었다.
- 지속적인 개선, 쉽게 길을 확장하여 기능과 최적화를 추가하는 API 여부를 수있는 기능을 지원합니다.
5, 테스트 용이성 API를 개선하기 위해
API 테스트 할 필요가있다, 시험은 더 나은 호환성 문제는 업그레이드 과정에서 발생하지 않도록하기 위해, 엄격한 "호환성 통합 테스트,"API를 통해 특히, 전체 API를 테스트, 구현에 의존해서는 안됩니다. 호환성 통합 테스트, 테스트 케이스의 집합 그룹을 의미한다,이 그룹의 테스트 케이스는 API를 사용하여 사용자의 위치에 서 있습니다. API를 업그레이드 한 후, 다음 테스트 케이스 세트가 테스트에 의해 기대와 일치 완전하게 될 수 있는지 여부를 테스트, 가능한 한 그 호환성 문제를 발견했다.
6 API와 이전 버전과의 호환성을 보장하기 위해
, 만 API 호환 신뢰 현재와 API 사용자 또는 API의 잠재적 인 사용자에 있기 때문에 "호환"이 열망하는 각 API 디자이너하십시오. 그러나 또한 중요성과 복잡성을 다양한 의미 여러 수준에서 이전 버전과 호환 중요성 및 이전 버전과의 호환성의 다른 수준이 있습니다.
7, 유지하고 점진적으로 개선하기 위해
과거에는 우리가 항상 존재하는 "부당"디자인이 완전히 전복 희망하고, 우리가 한 번 타도해야 할, 지금은 "좋은"아이디어에 따라 API를 재 설계하는 것이 아니라 일정 기간 후, 같은 상황이 발생합니다 . 우리는 기존 디자인의 전복에 의존 점진적으로 개선 할 수있는 효과적인 방법이없는 경우, API는 우리가 시작점으로 돌아갈 수 있습니다 재 설계하고 전 과정을 재현. 동시에 API 호환성의 지속적인 개선에 잘 확립 된 접근 방식에, 더 나은 만들기 위해 API를 향상시킬 수 있습니다.
8 API의 라이프 사이클을 파악
각 API는 우리가 더 긴 수명주기 API를 가지고 있고, 수명주기의 끝에서 그에게 부드러운 API의 죽음을 확인해야합니다, 라이프 사이클이다.
- 우리는 어떻게 사용자를 알 수 있습니까 종종 잘못된 API가 주요 살인자의 수명을 단축 사용 지침을, 오용을 피하기 제공하도록 설계되었습니다
- 시험 기간은 API의 안정성은 강한 생명력을 가지고하기 위해 API의 재판 후, 시작하는 것은 불가능합니다
- 내부 사용, 보조 개발, 개발 또는 시험, 안정성, 사용되지 않는 API : API 등급입니다. 남용을 방지 API 동안, 우리는 그 영향력을 확장하려면 API의 레벨을 조정하지만, 또한 API의 수명주기의 더 우아한 종료 할 수 있습니다.
API 개발 과정은 실제로 의사 소통의 과정이다. 통신은 사용자 및 API API의 디자이너입니다.
9, 특정 실시 예들의 다수
API를 피할 수 사망 또는 변경하는 경우, 우리가 수용하고이 사실을 직면해야한다, 여러 가지가 조정에 호환성, API 접근을 보장하는 전제하에 다음과 같습니다 :
- API는 새로운 API를 다시 설정, 사용되지 않는 것으로 표시. API를 피할 수 사망 인 경우,이 유일한 방법입니다.
- 기능의 추가를 달성하기 위해 추가 매개 변수 또는 매개 변수 옵션을 추가하려면
- 기존의 API는 두 부분으로, 간소화 된 핵심 API 패키지 코어 API에 의해 달성 과거에 API로 분할합니다. 당신은 코드의 버전을 박탈를 해결해야하는 경우는 일반적으로 사용됩니다.
- 기존의 기반으로 캡슐화 된 API는,보다 다양한 패키지 또는 클래스를 제공한다
좋은 API 예 :
- API 플리커 , 여기에 문서입니다 예를 매우 편리하게 제공하면서, API 테스트 도구를 .
- 미디어 위키 API
- API 이베이는 매우 상세한 문서가 예 .
원본 링크 : http://www.biaodianfu.com/how-to-design-a-good-api.html
휴대 전화는 오늘날 널리 인기에서, 휴대 전화 응용 프로그램은 더 많은 수 있지만 성장 속도는 매우 빠릅니다. 일반적인 PC 소프트웨어와 모바일 애플리케이션 개발 소프트웨어의 구현은, 또한 BS와 CS 모드로 나누어 져 있습니다. 주로 서버 측 인터페이스의 형태로 CS 방법의 사용은, (대화 형이 주류 데이터 : JSON, WebService를, 등) 데이터 교환을 제공, 우리는 오늘 인터페이스를 디자인하는 방법을 말한다.
클라이언트 데이터베이스와 데이터 흐름 통신 등의 브릿지 인터페이스는 직접 데이터 무결성의 프로그램, 안정성, 신뢰성 및 정확성의 효율성에 영향을 미치는 중요한 역할을한다. 클라이언트 초점은 가장 직접적인 경험은 사용자 경험, 원활하게 작동하기 쉬운 아름다운 인터페이스, 그리고 인터페이스는 모든 데이터의 제공 깊은 의미의 사용자 경험이다.
프로젝트의 차원, 인터페이스 디자인, 그것은 매우 중요합니다. 그래서 인터페이스를 디자인하는 방법에 대한 현재의 경험을 요약 한 것입니다.
첫째, 설계 원칙
요구의 1에 대한 심층적 인 이해
대부분의 사람들이 요구를 이해 데이터베이스 디자인뿐만 아니라, 두 번째는 인터페이스, 때로는 데이터베이스 디자인에 관련된 인터페이스 개발자를 디자인 한 사람입니다. 은 "- 인터페이스 - 클라이언트 데이터베이스"에서보기의 레벨 점, 인터페이스는 다른 한편으로는 데이터에 대한 인터페이스, 데이터를 구성, 데이터베이스에서 가져 오는 방법을 고려하는 것이 무엇인지 이해하는 한편,의 넥서스에 중요한 역할을한다. 당신은 요구 사항을 이해하지 그래서, 당신은 클라이언트에 데이터를 구성 할 수있는 추상 개체를 수정할 수 없으며, 수요를 충족 할 수있는 데이터베이스의 데이터 구조를 확인할 수 없습니다. 데이터베이스 설계자는 데이터의 구성 요건을 이해하기 위해, 상기 인터페이스로부터 유도되는 구조 요건 및 논리적 데이터 구조를 이해하기 더 논리적이다.
2. 이해 데이터베이스 구조
인터페이스가 이해하기 때문에 방법 데이터베이스 구조를 이해하기 위해, 물론, 데이터를 구성, 데이터베이스에서 얻을 수 있습니다.
3. 이해 클라이언트 프로토 타입
사실, 더 많은 데이터를 설계하고 인터페이스의 구조를 제공해야 돕기 위해 프로토 타입을 알아보세요. 당신이 프로토 타입을 설계, 그렇게되지 때로는 그러나이 조항은 반드시 필요하지 않습니다. 인터페이스 설계 완료 프로토 타입이 나온 경우에, 우리는 또한 프로토 타입 검증 인터페이스 디자인이 정확하고 합리적인 걸릴 수 있습니다.
둘째, 설계 원칙
1. 좋은 이유
그냥 요구가 인터페이스를 추가하지 않고, 다만 기능 인터페이스가 있어야합니다. 각각의 새로운 인터페이스는, 우리는이 인터페이스의 존재 가치의 매우 많은 양의 것을 고려해야 할 모든 이유가 있어야 의미 인터페이스, 유지 보수의 어려움을 증가뿐만 아니라 프로세스의 제어를위한 중요한 크게 감소된다 인터페이스는 매우 비 대한 것입니다. 그래서 내가 먼저 배치.
2. 명확한 책임
인터페이스는 비즈니스 기능에 같은 멤버를 조회하는 등의 여러 작업을 포함 할 수 있기 때문에 단일 책임의 원칙, 회원이 회원 쿼리 시트에 추가로 획득 할 수있다 비슷하지만 차이가있는 비즈니스 기능 및 디자인 패턴에 대해서만 책임이 있습니다 기타 필요한 정보 만 회원뿐만 아니라 권리와 유사한 다른 비즈니스 기능의 쿼리를 수정하지 않는, 또한 할 두 개의 인터페이스로 나눌 수 있습니다.
3. 높은 응집력 및 낮은 결합
인터페이스는 가능한 한 작게 완벽한 비즈니스 기능 및 다양한 인터페이스의 관련 서비스를 포함합니다. 회원이나 쿼리,하지만 때로는 쿼리 회원의 예로는 (예 : 상태 등) 변경됩니다 관련 정보의 구성원이 될 수 있습니다 사업의 전체 라인이, 다음은 인터페이스에서 수행되어야하고,해서는 안되는 시간의 경우 별도의 작업을 설정하는 인터페이스가 완료됩니다. 즉, 인터페이스의 변화가 서로 또는 몇몇 인터페이스의 존재를 전제로 변경되지 않아야한다.
4. 분석 각도 명확
인터페이스 디자인의 각도 분석은 명확 통합합니다. 그렇지 않으면 인터페이스 구조에 혼란을 일으킬 것입니다. 기능적인 관점을 설계 할 필요가 예를 들어, 디자인 관점의 역할에서 잠시 동안하지 않습니다.
참고로 통합 된 형식
아닌 날짜 매개 변수는 인터페이스 X, X, X 일 스타일이고, 다른 하나는 XXX이며, 모든 인터페이스의 정수 포맷과 스타일 요구 사항은 하나도 인터페이스 파라미터 쉼표로 구분되고, 다른 배열이며, 통일.
6. 상태 및 메시지
필요한 인터페이스 통화 상태 정보를 제공합니다. 호출이 성공 여부?이 실패하면 실패의 원인이다. 필요한 정보는 클라이언트에 이야기해야합니다.
7. 제어 데이터 볼륨
인터페이스 반환 데이터의 과도한 양을 포함 할 수 없습니다, 데이터의 양이 매우 큰 경우에만 데이터 전송의 압력에 대처 너무 복잡, 그것은 클라이언트 응답을 느리게으로 이어질 것입니다. 데이터 인터페이스의 과도한 금액은 종종 명확하게 경계가되지 않습니다.
8. 임의의 매개 변수 확장 금지
섹션 1과 마찬가지로, 그것은 단지 인수의 목적이다. 수요의 변화가 먼저 용이하게하기 위해 매개 변수를 추가하여 기존의 내부 인터페이스의 유지 보수 수요를 충족보다는할지 여부를 고려해야하기 전에 미래의 확장 인터페이스는 추가 매개 변수가 필요하고 의미해야 매개 변수를 추가 부담 피하기 어려운,하지만 될 수있다 많은 변화가 직접 클라이언트 호출, 쉬운 버전 호환성 문제의 매개 변수의 변화로 이어질 것 때문에 어려움은, 자신의 요구를 달성하기 위해.
셋째, 설계 방법
1. 추상 사업
반면 추상 개체, 추상적 인 넓은 비즈니스에서, 나는 그것이 상대적으로 쉽게 생각하지만, 종종 잘 못 이해 추상적 인 스케일.
2. 데이터 형식
데이터 형식 정의 된 인터페이스는 완전히 다른 데이터 변환이 실패하거나 길이 오차를 초과 고려되어 있어야합니다. 당신이 확실하지 않은 경우, 직접 문자열로 가장 적합합니다.
3. 의미있는 이름
인터페이스 또는 매개 변수 이름은 의미가되어야하는지, 사람들 Nengkanmingbai.
즉, 인터페이스 디자인은 힘든 일이 충돌하는 디자인이 많이있을 것입니다,하지만, 개인이 명확 촉진하기 때문에뿐만 아니라 클라이언트 브라우저 인터페이스에, 그레인 디자인 방향 (즉, 응집 이상) 굵은 경향, 유지 보수도 가볍다 단점은 인터페이스 확장이 매우 유연하지 않은 일을하지만,이 인터페이스를 재정 의하여 해결 될 수 있지만, 같은에 이전, 새로운 인터페이스 또는 두 번 생각 할 때이다. 거기에 더 많은 이론적 설명, 그러나 명심 있지만, 실제 작업과 함께, 깊이 그 의미를 감사 천천히 것이다. 그 이론은 실천을 안내 이론을 확인하는 연습을합니다.
십시오 : 링크
HTTPS : //www.jianshu.com/p/fd0bdb5dc31d 재현