Swift에서 메서드 매개변수명으로 for
, in
, using
등의 키워드를 사용하는 것은 특별한 문법적 의미를 가진 것이 아닙니다. 대신, 이러한 키워드는 메서드의 가독성을 높이고 코드가 더 자연스럽게 읽히도록 돕기 위해 사용됩니다. Swift에서는 메서드나 함수의 이름을 설계할 때, 이들 키워드를 포함시켜 명확한 의도를 전달하는 것이 일반적입니다.
예를 들어, 아래와 같은 코드가 있을 수 있습니다:
func execute(for task: String, in environment: String, using tool: String) {
// 작업 수행
}
이 메서드는 다음과 같은 의미를 가지고 있습니다:
for task
: 어떤 작업을 수행할 것인지 지정.in environment
: 어떤 환경에서 이 작업을 수행할 것인지 지정.using tool
: 어떤 도구를 사용하여 이 작업을 수행할 것인지 지정.이처럼, for
, in
, using
등의 키워드를 매개변수명에 포함시키면, 메서드 호출 시 다음과 같이 읽기 쉽고 명확한 코드가 됩니다:
execute(for: "Build", in: "Production", using: "Xcode")
이러한 스타일은 Swift의 함수 및 메서드 호출이 자연어 문장처럼 읽히도록 하는 디자인 철학을 반영한 것입니다. 이로 인해 코드의 가독성이 향상되고, 함수가 수행하는 동작이 더 명확하게 드러나게 됩니다.
예를 들어, 다음과 같은 메서드가 있다고 가정해 봅시다:
func prepare(for event: String, in location: String, using equipment: String) {
// 준비 작업 수행
}
이 메서드를 자연스럽게 읽으면 다음과 같이 해석할 수 있습니다:
따라서, 이 메서드를 호출할 때:
prepare(for: "Conference", in: "Main Hall", using: "Projector")
이 코드는 자연스럽게 "컨퍼런스를 메인 홀에서 프로젝터를 사용하여 준비한다"라고 읽을 수 있습니다.
이렇게 Swift는 함수나 메서드를 정의할 때, 매개변수명에 for
, in
, using
같은 키워드를 사용하여 코드를 자연스럽게 읽을 수 있도록 설계합니다. 이는 코드의 의도를 더 명확하게 전달하고, 함수의 호출이 자연어 문장처럼 이해되도록 도와줍니다.
이것이 Swift의 함수 디자인에서 중요한 특징 중 하나입니다. Swift는 이처럼 문법적으로 자연스러움을 추구하여, 개발자가 코드의 의도를 쉽게 파악하고 유지보수하기 쉽게 합니다.
이 외에도 다양한 매개변수명을 사용할수 있습니다.
Swift에서 자연스럽게 읽히도록 매개변수명을 설계하는 예시는 매우 다양합니다. 여기 몇 가지 추가적인 예시를 들어보겠습니다:
func fetchData(from url: String, withParameters parameters: [String: String], completion: (Data?) -> Void) {
// 데이터를 가져오는 작업
}
이 코드는 다음과 같이 해석됩니다:
호출 예시:
fetchData(from: "<https://example.com>", withParameters: ["query": "swift"]) { data in
// 데이터 처리
}
func configure(button: UIButton, withTitle title: String, forState state: UIControl.State) {
// 버튼을 설정하는 작업
}
이 코드는 다음과 같이 읽힙니다:
호출 예시:
configure(button: myButton, withTitle: "Submit", forState: .normal)
func save(document: String, to directory: String, withName name: String) {
// 문서를 저장하는 작업
}
이 코드는 다음과 같이 해석됩니다:
호출 예시:
save(document: "MyReport", to: "Documents", withName: "Report2024")
func filter(items: [String], by criteria: String, include: Bool) -> [String] {
// 조건에 맞는 항목을 필터링하는 작업
}
이 코드는 다음과 같이 해석됩니다:
호출 예시:
let filteredItems = filter(items: ["Apple", "Orange", "Banana"], by: "A", include: true)
func animate(view: UIView, over duration: TimeInterval, withOptions options: UIView.AnimationOptions) {
// 애니메이션을 설정하는 작업
}
이 코드는 다음과 같이 읽힙니다:
호출 예시:
animate(view: myView, over: 2.0, withOptions: .curveEaseInOut)
이런 방식으로 매개변수명을 설계하면, 메서드 호출이 자연스럽고 읽기 쉬워져 코드의 의도를 명확하게 전달할 수 있습니다. Swift의 함수 설계 철학은 코드가 자연어처럼 읽히도록 돕는 것이며, 이와 같은 매개변수명 설계는 그 철학을 잘 반영하고 있습니다.
Swift에서는 함수나 메서드의 매개변수 레이블을 생략하거나 커스텀 레이블을 사용할 수 있습니다. 이를 통해 함수 호출 시 가독성을 높이거나, 필요에 따라 레이블을 생략하여 간결하게 표현할 수 있습니다.
_
사용)매개변수 레이블을 생략하고 싶을 때는 레이블 대신 _
를 사용합니다. 이렇게 하면 호출할 때 매개변수 레이블을 생략할 수 있습니다.
func add(_ number1: Int, _ number2: Int) -> Int {
return number1 + number2
}
이 함수는 매개변수 레이블을 사용하지 않고 호출됩니다:
let sum = add(5, 10)
여기서 add
함수는 인자 레이블을 생략한 채 매개변수를 전달할 수 있습니다.
함수를 정의할 때 외부 레이블(함수 호출 시 사용되는 이름)과 내부 매개변수명(함수 내부에서 사용되는 이름)을 다르게 설정할 수 있습니다. 이를 통해 함수 호출 시 가독성을 높이고, 내부적으로 더 명확한 변수명을 사용할 수 있습니다.
func greet(person name: String, withMessage message: String) {
print("Hello \\(name), \\(message)")
}
호출 시:
greet(person: "John", withMessage: "Welcome to Swift!")
여기서 person
과 withMessage
는 함수 외부에서 호출할 때 사용되며, 내부에서는 name
과 message
라는 변수로 접근됩니다.
함수 오버로딩이나 기본 값을 제공하여 매개변수 레이블을 선택적으로 사용할 수도 있습니다. 이는 함수 호출을 유연하게 만들어 줍니다.
func sendEmail(to recipient: String, withSubject subject: String = "No Subject") {
print("Sending email to \\(recipient) with subject: \\(subject)")
}
이 경우 호출할 때 withSubject
레이블을 생략하거나 사용할 수 있습니다:
sendEmail(to: "example@example.com")
sendEmail(to: "example@example.com", withSubject: "Swift Tips")
출처
https://www.swift.org/documentation/api-design-guidelines/#parameter-names
https://applecider2020.tistory.com/21