Swift-style-guide: 빈 λ°°μ—΄ 및 사전 μ΄ˆκΈ°ν™” 재고

에 λ§Œλ“  2016λ…„ 04μ›” 07일  Β·  3μ½”λ©˜νŠΈ  Β·  좜처: raywenderlich/swift-style-guide

ν˜„μž¬ μŠ€νƒ€μΌ κ°€μ΄λ“œμ—μ„œλŠ” λ°°μ—΄κ³Ό 사전을 λ‹€μŒκ³Ό 같이 μ΄ˆκΈ°ν™”ν•œλ‹€κ³  λ‚˜μ™€ μžˆμŠ΅λ‹ˆλ‹€.

var names = [String]()
var lookup = [String: Int]()

이에 μ°¬μ„±ν•˜μ—¬ λ‹€μŒκ³Ό 같이 μ£Όμž₯ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€.

var names: [String] = []
var lookup: [String: Int] = [:]

λ‚΄ κ·Όκ±°λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

  • [Type]() λŠ” 특히 μƒˆλ‘œ 온 μ‚¬λžŒμ—κ²Œ λ‚―μ„€μ–΄ λ³΄μž…λ‹ˆλ‹€. λ‚˜μ—κ²Œ : [Type] = [] λŠ” λ§Žμ€ κ²½μš°μ— λ‹¨μˆœνžˆ 더 잘 μ½μŠ΅λ‹ˆλ‹€.
  • ν˜•μ‹ μœ μΆ”λ₯Ό μ‚¬μš©ν•  수 μžˆλŠ” 인수둜 빈 λ°°μ—΄(λ˜λŠ” OptionSetType)을 전달할 λ•Œ κΈ°λ³Έ μ΄ˆκΈ°ν™” κ°œμ²΄κ°€ μ•„λ‹ˆλΌ 항상 []λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. μ—¬κΈ°μ—λŠ” 일관성이 μžˆμŠ΅λ‹ˆλ‹€.
  • κ°„λ‹¨νžˆ λ§ν•΄μ„œ 단일 ν–‰ λ°°μ—΄μ˜ 경우 μœ ν˜•μ„ μœ μΆ”ν•  수 μžˆλŠ” κ²½μš°κ°€ λ§ŽμŠ΅λ‹ˆλ‹€. 이것은 쒋은 것이며 ν™œμš©ν•΄μ•Ό ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ—¬λŸ¬ 쀄에 걸쳐 μžˆλŠ” λ°°μ—΄μ˜ 경우 ν˜•μ‹ μœ μΆ”μ— λΉ„μš©μ΄ 많이 λ“€ 수 μžˆμŠ΅λ‹ˆλ‹€. κ³ λ €ν•˜λ‹€:
var stuff = [1, 2, 3, 4, 5,  // ... 100 more numbers
                  106.7, 107, "haha", nil, 108, 109]

type checkerλŠ” infer stuff λ₯Ό μ˜¬λ°”λ₯΄κ²Œ μž…λ ₯ν•˜κΈ° μœ„ν•΄ λͺ¨λ“  μš”μ†Œλ₯Ό β€‹β€‹μŠ€μΊ”ν•΄μ•Ό ν•©λ‹ˆλ‹€. 트릭이 없을 λ•Œμ—λ„("ν•˜ν•˜"), νŽΈμ§‘μžκ°€ 이 μˆ˜λ μ— λΉ μ§€λŠ” 것을 λ³΄μ•˜μŠ΅λ‹ˆλ‹€. (Hello rainbow.) μœ ν˜• 검사기λ₯Ό μž‘λ™ν•˜μ—¬ μž‘μ—…μ„ λ‹€μ‹œ 확인할 수 μžˆλ„λ‘ ν•˜λŠ” 것이 쒋은 생각인 것 κ°™μŠ΅λ‹ˆλ‹€.

μ–΄λ–»κ²Œ 생각해?

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

@rayfix μ œμ•ˆν•œ ν˜•μ‹(예: var names: [String] = [] )을 μ„ ν˜Έν•˜κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

이 μ ‘κ·Ό 방식이 let μƒμˆ˜λ‘œ 배열을 μ •μ˜ν•˜λ €λŠ” 경우 μ·¨ν•˜λŠ” μ ‘κ·Ό 방식과 더 일관성이 μžˆμ–΄ λ³΄μž…λ‹ˆλ‹€. (λ‚˜μ€‘μ— λ³€κ²½ν•  수 μ—†μœΌλ―€λ‘œ 빈 λ°°μ—΄λ‘œ μ΄ˆκΈ°ν™”ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.)

예λ₯Ό λ“€μ–΄ 클래슀의 경우:

class SimpleClass {
    let array: [String]

    init(array: [String]) {
        self.array = array
    }    
}

λ˜λŠ” 값이 쑰건에 따라 λ‹¬λΌμ§€λŠ” μƒμˆ˜ 배열을 μ •μ˜ν•  λ•Œ.

let array: [String]
if condition {
    array = array1
} else {
    array = array2
}

λͺ¨λ“  3 λŒ“κΈ€

@rayfix μ œμ•ˆν•œ ν˜•μ‹(예: var names: [String] = [] )을 μ„ ν˜Έν•˜κ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

이 μ ‘κ·Ό 방식이 let μƒμˆ˜λ‘œ 배열을 μ •μ˜ν•˜λ €λŠ” 경우 μ·¨ν•˜λŠ” μ ‘κ·Ό 방식과 더 일관성이 μžˆμ–΄ λ³΄μž…λ‹ˆλ‹€. (λ‚˜μ€‘μ— λ³€κ²½ν•  수 μ—†μœΌλ―€λ‘œ 빈 λ°°μ—΄λ‘œ μ΄ˆκΈ°ν™”ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.)

예λ₯Ό λ“€μ–΄ 클래슀의 경우:

class SimpleClass {
    let array: [String]

    init(array: [String]) {
        self.array = array
    }    
}

λ˜λŠ” 값이 쑰건에 따라 λ‹¬λΌμ§€λŠ” μƒμˆ˜ 배열을 μ •μ˜ν•  λ•Œ.

let array: [String]
if condition {
    array = array1
} else {
    array = array2
}

이것에 큰 +1!

μ½”μŠ€ μ΄ˆκΈ°μ— λ°°μ—΄(및 사전)을 κ°€λ₯΄μΉ  수 있기 λ•Œλ¬Έμ— μ½”μŠ€μ— var array: [Type] = [] ν‘œκΈ°λ²•μ„ μ„ νƒν–ˆμŠ΅λ‹ˆλ‹€. λ‚˜μ˜ ꡐ윑 방식은 μ²˜μŒλΆ€ν„° μ‹œμž‘ν•˜μ—¬ ν•œ λ²ˆμ— ν•˜λ‚˜μ˜ 주제만 μΆ”κ°€ν•˜κ³  μ„€λͺ…λ˜μ§€ μ•Šμ€ μƒνƒœλ‘œ 두지 μ•ŠλŠ” κ²ƒμž…λ‹ˆλ‹€. 이 ν‘œκΈ°λ²•μ€ μ΄λ‹ˆμ…œλΌμ΄μ €λ‚˜ μ œλ„€λ¦­κ³Ό 같이 학생듀이 아직 μ΅μˆ™ν•˜μ§€ μ•Šμ€ 주제λ₯Ό ν¬ν•¨ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— κ·Έλ ‡κ²Œ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ‚¬λž‘ν•΄. λ‚΄ μžμ‹ μ˜ μ½”λ“œλ² μ΄μŠ€μ—μ„œ μ œμ•ˆν•œ ꡬ문을 μ‚¬μš©ν•©λ‹ˆλ‹€. λ°©μ •μ‹μ˜ ν•œμͺ½μ—λŠ” var의 μ •μ˜μ™€ μœ ν˜•μ΄, λ‹€λ₯Έ μͺ½μ—λŠ” 값이 ν‘œμ‹œλ©λ‹ˆλ‹€. 멋지고 κ°„λ‹¨ν•©λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰