시스템 간 (비즈니스 레벨에서) API를 논의 할 때, 우리 팀에는 종종 두 가지 관점이 있습니다. 어떤 사람들은 일반적인 추상 접근 방식을 선호하고 다른 하나는 "구체적인"접근 방식을 선호합니다 .
예 : 간단한 "개인 검색"API 설계. 구체적인 버전은
searchPerson(String name, boolean soundEx,
String firstName, boolean soundEx,
String dateOfBirth)
구체적인 버전을 선호하는 사람들은 다음과 같이 말합니다.
- API는 자체 문서화입니다
- 이해하기 쉽다
- 검증하기 쉽다 (컴파일러 또는 웹 서비스 : 스키마 검증)
- 키스
우리 팀의 다른 사람들은 "그건 검색 기준의 목록 일뿐"이라고 말합니다.
searchPerson(List<SearchCriteria> criteria)
와
SearchCritera {
String parameter,
String value,
Map<String, String> options
}
아마도 열거 형의 "매개 변수"를 만들 수 있습니다.
지지자들은 다음과 같이 말합니다.
- API를 변경하지 않으면 (예 : 더 많은 기준이나 옵션 추가) 구현이 변경 될 수 있습니다. 배포시 이러한 변경 내용을 동기화하지 않아도됩니다.
- 구체적인 변형에서도 문서화가 필요합니다
- 스키마 유효성 검사가 과대 평가되었습니다. 종종 추가 유효성 검사를 수행해야합니다. 스키마는 모든 사례를 처리 할 수 없습니다.
- 우리는 이미 다른 시스템과 비슷한 API를 가지고 있습니다-재사용
반론은
- 유효한 매개 변수 및 유효한 매개 변수 조합에 대한 많은 문서
- 다른 팀에서는 이해하기 어렵 기 때문에 더 많은 의사 소통 노력
모범 사례가 있습니까? 문학?