Swift - 매개변수 이름 정하기

이재원·2024년 12월 30일
0

Swift

목록 보기
14/15
post-thumbnail

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 event: "어떤 이벤트를 준비하다"
  • in location: "어떤 장소에서"
  • using equipment: "어떤 장비를 사용하여"

따라서, 이 메서드를 호출할 때:

prepare(for: "Conference", in: "Main Hall", using: "Projector")

이 코드는 자연스럽게 "컨퍼런스를 메인 홀에서 프로젝터를 사용하여 준비한다"라고 읽을 수 있습니다.

이렇게 Swift는 함수나 메서드를 정의할 때, 매개변수명에 for, in, using 같은 키워드를 사용하여 코드를 자연스럽게 읽을 수 있도록 설계합니다. 이는 코드의 의도를 더 명확하게 전달하고, 함수의 호출이 자연어 문장처럼 이해되도록 도와줍니다.

이것이 Swift의 함수 디자인에서 중요한 특징 중 하나입니다. Swift는 이처럼 문법적으로 자연스러움을 추구하여, 개발자가 코드의 의도를 쉽게 파악하고 유지보수하기 쉽게 합니다.

이 외에도 다양한 매개변수명을 사용할수 있습니다.

Swift에서 자연스럽게 읽히도록 매개변수명을 설계하는 예시는 매우 다양합니다. 여기 몇 가지 추가적인 예시를 들어보겠습니다:

1. 네트워크 요청 처리

func fetchData(from url: String, withParameters parameters: [String: String], completion: (Data?) -> Void) {
    // 데이터를 가져오는 작업
}

이 코드는 다음과 같이 해석됩니다:

  • fetch data from url: "URL에서 데이터를 가져오다"
  • with parameters: "해당 파라미터와 함께"
  • completion: "완료 시 호출되는 콜백"

호출 예시:

fetchData(from: "<https://example.com>", withParameters: ["query": "swift"]) { data in
    // 데이터 처리
}

2. 사용자 인터페이스 설정

func configure(button: UIButton, withTitle title: String, forState state: UIControl.State) {
    // 버튼을 설정하는 작업
}

이 코드는 다음과 같이 읽힙니다:

  • configure button with title: "버튼에 제목을 설정하다"
  • for state: "특정 상태에 대해"

호출 예시:

configure(button: myButton, withTitle: "Submit", forState: .normal)

3. 파일 저장

func save(document: String, to directory: String, withName name: String) {
    // 문서를 저장하는 작업
}

이 코드는 다음과 같이 해석됩니다:

  • save document to directory: "문서를 특정 디렉토리에 저장하다"
  • with name: "특정 이름으로"

호출 예시:

save(document: "MyReport", to: "Documents", withName: "Report2024")

4. 데이터 필터링

func filter(items: [String], by criteria: String, include: Bool) -> [String] {
    // 조건에 맞는 항목을 필터링하는 작업
}

이 코드는 다음과 같이 해석됩니다:

  • filter items by criteria: "항목을 특정 기준으로 필터링하다"
  • include: "포함 여부를 지정하다"

호출 예시:

let filteredItems = filter(items: ["Apple", "Orange", "Banana"], by: "A", include: true)

5. 애니메이션 설정

func animate(view: UIView, over duration: TimeInterval, withOptions options: UIView.AnimationOptions) {
    // 애니메이션을 설정하는 작업
}

이 코드는 다음과 같이 읽힙니다:

  • animate view over duration: "뷰를 주어진 시간 동안 애니메이션하다"
  • with options: "특정 옵션과 함께"

호출 예시:

animate(view: myView, over: 2.0, withOptions: .curveEaseInOut)

이런 방식으로 매개변수명을 설계하면, 메서드 호출이 자연스럽고 읽기 쉬워져 코드의 의도를 명확하게 전달할 수 있습니다. Swift의 함수 설계 철학은 코드가 자연어처럼 읽히도록 돕는 것이며, 이와 같은 매개변수명 설계는 그 철학을 잘 반영하고 있습니다.

Swift에서는 함수나 메서드의 매개변수 레이블을 생략하거나 커스텀 레이블을 사용할 수 있습니다. 이를 통해 함수 호출 시 가독성을 높이거나, 필요에 따라 레이블을 생략하여 간결하게 표현할 수 있습니다.

1. 매개변수 레이블 생략하기 (_ 사용)

매개변수 레이블을 생략하고 싶을 때는 레이블 대신 _를 사용합니다. 이렇게 하면 호출할 때 매개변수 레이블을 생략할 수 있습니다.

func add(_ number1: Int, _ number2: Int) -> Int {
    return number1 + number2
}

이 함수는 매개변수 레이블을 사용하지 않고 호출됩니다:

let sum = add(5, 10)

여기서 add 함수는 인자 레이블을 생략한 채 매개변수를 전달할 수 있습니다.

2. 외부 레이블과 내부 매개변수명 분리

함수를 정의할 때 외부 레이블(함수 호출 시 사용되는 이름)과 내부 매개변수명(함수 내부에서 사용되는 이름)을 다르게 설정할 수 있습니다. 이를 통해 함수 호출 시 가독성을 높이고, 내부적으로 더 명확한 변수명을 사용할 수 있습니다.

func greet(person name: String, withMessage message: String) {
    print("Hello \\(name), \\(message)")
}

호출 시:

greet(person: "John", withMessage: "Welcome to Swift!")

여기서 personwithMessage는 함수 외부에서 호출할 때 사용되며, 내부에서는 namemessage라는 변수로 접근됩니다.

3. 매개변수 레이블을 선택적으로 제공

함수 오버로딩이나 기본 값을 제공하여 매개변수 레이블을 선택적으로 사용할 수도 있습니다. 이는 함수 호출을 유연하게 만들어 줍니다.

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

profile
20학번 새내기^^(였음..)

0개의 댓글