728x90
- API 안정성을 확인하는 것은 소프트웨어의 일관성과 신뢰성을 보장하기 위해 매우 중요합니다. 안정적인 API는 사용자와 개발자에게 신뢰를 주고, 소프트웨어 유지보수를 용이하게 합니다.
- Versioning System
- Versioning System 은 API 의 안정성을 유지하고, 변경 사항을 명확히 전달하기 위해 사용하는 체계적인 버전 관리 방법
- Semantic Versioning (SemVer)
- Semantic Versioning 은 가장 널리 사용되는 버전 관리 시스템 중 하나로, 세가지 숫자로 구성
- MAJOR.MINOR.PATCH. 각 숫자는 특정한 의미를 가지고 있음
- MAJOR: 하위 호환성이 깨지는 변경이 있을 때 증가합니다.
- MINOR: 하위 호환성을 유지하면서 새로운 기능을 추가할 때 증가합니다.
- PATCH: 하위 호환성을 유지하면서 버그를 수정할 때 증가합니다.
1.0.0 - 초기 안정화된 버전
1.1.0 - 새로운 기능 추가 (하위 호환성 유지)
1.1.1 - 버그 수정 (하위 호환성 유지)
2.0.0 - 하위 호환성이 깨지는 변경 사항 포함
- @Experimental
- @Experimental 어노테이션은 아직 안정적이지 않은 실험적인 API 기능에 사용
- 이러한 기능은 향후 변경되거나 제거될 수 있음을 의미
@RequiresOptIn(level = RequiresOptIn.Level.WARNING)
annotation class ExperimentalAPI
@ExperimentalAPI
class ExperimentalFeature {
fun experimentalMethod() {
println("This is an experimental method")
}
}
@Deprecated("Use newFunction() instead", ReplaceWith("newFunction()"))
fun oldFunction() {
println("This is the old function")
}
fun newFunction() {
println("This is the new function")
}
fun main() {
// 옵트인 없이 실험적 기능을 사용하면 경고 메시지가 표시됩니다.
val feature = ExperimentalFeature()
feature.experimentalMethod()
// 대체 기능이 제공된 사용 중단된 기능을 호출하면 경고 메시지가 표시됩니다.
oldFunction()
// 올바른 사용 예
newFunction()
// 옵트인하여 실험적 기능을 사용하는 예
@OptIn(ExperimentalAPI::class)
fun useExperimentalFeature() {
val feature = ExperimentalFeature()
feature.experimentalMethod()
}
useExperimentalFeature()
}
- 생각:
- SemVer 이 가장 무난하다고 생각
- 추후 변경되는 api 가 있다면 Deprecated 와 ReplaceWith 를 이용해 처리해 봐야겠다.
- url 또한 설계를 잘해야겠다..요즘들어 너무 생각없이 한 코드들이 보임 추후 정리해서, 수정된 url 도 받을 수 있게 처리할 예정
728x90
'공부 > 이펙티브코틀린' 카테고리의 다른 글
아이템 30 - 요소의 가시성을 최소화하라 (0) | 2024.07.02 |
---|---|
아이템 29 - 외부 API 를 랩(warp)해서 사용하라 (0) | 2024.06.23 |
아이템 27 - 변화로부터 코드를 보호하려면 추상화를 사용하라 (0) | 2024.06.21 |
아이템 26 - 함수 내부의 추상화 레벨을 통일하라. (0) | 2024.06.21 |
아이템 24 - 제네릭 타입과 variance 한정자를 활용하라 (1) | 2024.06.13 |
댓글