Good

  • ํ•˜๋ฃจ ๋ชฉํ‘œํ•œ ์–‘์€ ๋‹คํ–ˆ๋‹ค.
  • ์„œ๋‘˜๋Ÿฌ์„œ ์ฒ˜๋ฆฌํ•˜๋ ค ํ–ˆ๊ณ , ์ด๋ค˜๋‹ค.

Bad

  • ์ผ์ด ๋ฐ”๋น , ์„ธ์›Œ๋‘์—ˆ๋˜ ๋ผ์ดํ”„ ์Šคํƒ€์ผ์„ ์ง€ํ‚ค์ง€ ๋ชปํ–ˆ๋‹ค.

Learns

dictionary

 
    public var result: [String: Int] {
        var dictionary = [String: Int64]()
        dictionary["id"] = self.id
        dictionary["order"] = order
        return dictionary
    }
 
    public var result: [String: Int] {
        ["id": self.id, "order": order]
    }
  • ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ค„์—ฌ์•ผ ํ•œ๋‹ค.

timer

  • timer invalidate๋Š” deinit์—์„œ ํ•˜๋ฉด ์•ˆ๋จ
  • ํƒ€์ด๋จธ๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›๋Š” ๋…€์„์„ captureํ•˜๊ณ  ์žˆ์„ ๊ฒƒ์ž„
  • ๊ทผ๋ฐ view๋„ ํƒ€์ด๋จธ๋ฅผ ๊ฐ€์ง€๊ณ  ์ž‡์Œ
  • retain cycle ํ˜•์„ฑ
  • deinit ์•ˆ๋  ๊ฐ€๋Šฅ์„ฑ ์žˆ์Œ
  • ๊ทธ๋ž˜์„œ ํด๋กœ์ € ์•ˆ์—์„œ invalidate, nil ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค˜์•ผ cycle ์•ˆ์ƒ๊น€ โ†’ ๋ฉ”๋ชจ๋ฆฌ์— ์Œ“์—ฌ์žˆ์„ ์ˆ˜ ์žˆ์Œ

Extra

  • n์ž ์ œํ•œ์žˆ๋Š” ํ…์ŠคํŠธ ํ•„๋“œ๋Š” ๋งˆ์ง€๋ง‰ ๋ฌธ์ž๊ฐ€ ํ•œ๊ธ€์ธ ๊ฒฝ์šฐ ์ œ๋Œ€๋กœ ์ž…๋ ฅ์ด ์•ˆ๋œ๋‹ค.
  • ํ…์ŠคํŠธ ํ•„๋“œ๋ฅผ ๋‘๊ฐœ๋‘๊ณ  ๋ณด์—ฌ์ง€๋Š” ํ…์ŠคํŠธ ํ•„๋“œ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋“ฑ์˜ ๊ผผ์ˆ˜๊ฐ€ ์žˆ์œผ๋‚˜, ๊ธ€์Ž„..
  • ๋ฌธ์„œ๋ฅผ ์ž˜ ์ฝ์ž. SDK์— ์˜์กด์ ์ด๋ผ๋ฉด ์„ค๋ช…์„œ๋Š” ์ž˜ ์ฝ์–ด์•ผ ํ•œ๋‹ค. ๊ทผ๊ฑฐ๋„ ๋ฌธ์„œ๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค.

Commitment

  • ๋‹ค์‹œ ์ƒˆ๋ฒฝ์— ์šด๋™ํ•˜๋Š” ์Šต๊ด€์„ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.
  • ์˜์–ด ํšŒํ™”๋ฅผ ๊พธ์ค€ํžˆ ํ•ด๋ดค์ง€๋งŒ, ๋‹ค๋ฅธ ์ ‘๊ทผ์ด ํ•„์š”ํ•  ๋“ฏํ•˜๋‹ค. ์ ˆ๋Œ€์ ์ธ ์‹œ๊ฐ„์„ ๋ชป์Ÿ๋‹ค๋ณด๋‹ˆ ์„ฑ์žฅ์ด ๋”๋””๋‹ค. ๋‹ค๋ฅธ ๋™๊ธฐ์™€ ๋ชฉ์ ์„ ์ฐพ๊ณ  ์ง„ํ–‰ํ•ด์•ผ ํ•  ๋“ฏ
  • ๊ณ„์†ํ•ด์„œ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋ ค๋Š” ์Šต๊ด€์„ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค. ์ข‹์€ ์ฝ”๋“œ + ์†๋„ = ์‹ค๋ ฅ
  • ํ•œ๋ฒˆ ๊ฒช์—ˆ๋˜ ๊ฒƒ์€ ์žŠ์ง€ ์•Š์œผ๋ ค ๋…ธ๋ ฅํ•˜์ž. 3๋ฒˆ ๊นŒ๋จน์œผ๋ฉด ์‹ค๋ ฅ์ด๋‹ค.
  • ๋‹ค์‹œ ์•„์นจ ๋ฃจํ‹ด ์„ธ์›Œ์„œ ์ดํ–‰ํ•˜์ž!
  • ๋ธ”๋กœ๊ทธ ๊ธ€ ์˜ฌํ•ด์•ˆ์— 300๊ฐœ ์ ์–ด์•ผ ํ•œ๋‹ค.