패키지, 임포트 및 파일 수준 선언은 Kotlin 프로젝트의 구조의 기초에 있으며 개발자는 종종 네임스페이스 및 함수의 가시성 구성에 대한 질문에 직면합니다.
문제의 역사: Kotlin은 Java의 전통을 이어받아 패키지 시스템을 지원하지만, 파일 수준 선언이라는 개념을 추가하여 클래스 외부에 함수와 속성을 만들 수 있게 하여 코드의 모듈성과 표현력을 향상시킵니다.
문제: 함수, 속성 및 클래스를 최대한 편리하게 가시화하고 진입점을 구성하여 이름 충돌, 이중 임포트 및 프로젝트 부분 간의 불필요한 의존성을 피하려면 어떻게 해야 합니까?
해결책:
코드 예시:
package utils import kotlin.math.* import model.User as UserModel fun sum(a: Int, b: Int) = a + b val PI2 = PI * 2
주요 특징:
같은 이름의 패키지를 가진 서로 다른 파일에 동일한 이름의 함수/속성 선언이 있을 수 있습니까?
네, 그러나 다른 이름이나 임포트에 대한 alias를 사용하지 않으면 컴파일 시 이름 충돌을 일으킵니다. 파일 수준 선언은 패키지의 범위 내에서 작동합니다.
프로젝트 디렉토리 구조가 Java와 같은 패키지를 꼭 따라야 합니까?
아니요, 이는 코드 조직 및 유지 관리 편의를 위해 권장되지만, 컴파일러는 경로와 패키지의 차이를 허용합니다. 그러나 코드를 이동하거나 도구를 통해 빌드할 때 로그 및 모듈성과 관련된 어려움이 발생할 수 있습니다.
하나의 .kt 파일 내에 여러 패키지를 선언할 수 있습니까?
아니요, 하나의 .kt 파일에는 하나의 패키지만 선언할 수 있습니다. 패키지를 혼합하면 컴파일 오류가 발생합니다.
다양한 주제의 모든 보조 기능이 하나의 패키지 utils에 위치하고, 파일 Utility.kt에는 다양한 비즈니스 및 기술 방법이 포함되어 있습니다.
장점:
단점:
협약을 엄격히 준수합니다: 각 패키지는 도메인 영역을 반영하고, 파일 수준은 특정 클래스에 속하지 않는 함수에만 사용되며, 중복을 피하기 위해 alias를 사용하고, 각 파일은 주제를 따릅니다.
장점:
단점: