Good

  • ํฌ๊ฒŒ ์—†๋‹ค.

Bad

  • ์—๋„ˆ์ง€ ๋ ˆ๋ฒจ์ด ๋–จ์–ด์กŒ๋‹ค.
  • ์ฒด๋ ฅ์ด ๋ฌธ์ œ์ธ๊ฐ€?
  • ๋” ๊ฐ„์ ˆํ•œ ๊ฒƒ์ด ์—†์–ด์กŒ์„ ์ง€๋„ ๋ชจ๋ฅธ๋‹ค.

Learns

  • code smell!: fileprivate๋กœ ์„ ์–ธํ–ˆ๋˜๊ฑธ internal๋กœ ๋ณ€๊ฒฝํ•˜๊ฒŒ ๋˜๋Š” ์ˆœ๊ฐ„
    • ๊ทธ๋Ÿผ ์ ์  ๋ฌธ์ œ๊ฐ€ ์ƒ๊น€
    • fileprivate์œผ๋กœ ํ•  ๊ฒƒ ๊ฐ™์œผ๋ฉด extension์œผ๋กœ ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋ถ„๋ฆฌํ•˜๋Š”๊ฒŒ ๋‚˜์„ ์ˆ˜ ์žˆ๋‹ค.
    • fileprivate ์ด๋ผ๋Š” ๊ฒƒ์€ ํ•ด๋‹น ํŒŒ์ผ ๋‚ด์—์„œ๋งŒ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋‚ดํฌํ•˜๊ณ  ์žˆ๋‹ค.
    • ๊ทธ๋Ÿฐ๋ฐ ์ด๊ฑธ internal๋กœ ๋ฐ”๊พผ๋‹ค๋Š” ๊ฒƒ์€ ๋‹ค๋ฅธ ๊ณณ์—์„œ๋„ ์ฐธ์กฐํ•˜๊ฒ ๋‹ค๋Š” ์†Œ๋ฆฌ์ธ๋ฐ, ์ด๋Š” ๋ญ”๊ฐ€ ์ด์ƒํ•˜๋‹ค.
    • ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์ฐพ์•„์•ผ ํ•œ๋‹ค.
  • Optional(false) == false๋Š” true๋‹ค. optional wrapping์ด ๋˜์–ด ์žˆ์–ด๋„ ๋‚ด๋ถ€ ๊ฐ’๊ณผ ๋ฐ”๊นฅ๊ฐ’์„ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๊ตณ์ด ๋ฒ—๊ฒจ์„œ ๋น„๊ตํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.
  • ๋ฐ”๊นฅ์ชฝ์—์„œ closure๋ฅผ ๋„ฃ์–ด์„œ ๋™์ž‘์„ ๋ถ„๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๋‹ค.
    • ์™ธ๋ถ€์—์„œ ๋™์ž‘์„ ๋„ฃ์–ด์„œ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด contextMenu๊ฐ€ ์žˆ๊ฒ ๋‹ค.
  • Swift swizzing crash log๋‚จ๊ธธ ๋•Œ ์‚ฌ์šฉ.
    • ์•ฑ์ด ์ฃฝ์„ ๋–„ ๋จผ์ € ๋กœ๊น…์„ ๋‚จ๊ธฐ๋Š” ํ•จ์ˆ˜๋กœ ๋ฐ”๊ฟ”๋ฒ„๋ฆฌ๊ณ  ์ถ”ํ›„ ๋™์ž‘์„ ํ•˜๊ฒŒ ๋ณ€๊ฒฝํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค.
  • line ๊ธธ์ด (์„ธ๋กœ 300์ค„) lint๊ฐ™์€ ๊ฒฝ์šฐ
    • ํŒŒ์ผ ๋ถ„๋ฆฌ
    • ์ƒ์„ฑ์„ ๋‹ด๋‹นํ•˜๋Š” ๊ฐ์ฒด ์ƒ์„ฑ ํ›„ ๋ถ„๋ฆฌ
    • extension์„ ํŒŒ์ผ๋กœ ๋บ€ ํ›„ +๊ธฐ๋Šฅ์ด๋ฆ„.swift๋กœ ์ œ์ž‘
      • private์ด internal๋กœ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Œ(์™ธ๋ถ€ ํŒŒ์ผ์—์„œ ์‚ฌ์šฉํ•˜๋‹ˆ)

Commitment

  • ์‚ฌ๋‚ด ์œ„ํ‚ค๋ฅผ ์ฐพ์•„๋ณด๋Š” ์Šต๊ด€์„ ๋“ค์—ฌ์•ผ๊ฒ ๋‹ค. ์งˆ๋ฌธ์ „์— ๋ฌด์กฐ๊ฑด ์ฐพ๊ธฐ. ์ด๊ฒŒ ํŒ€ ์ƒ์‚ฐ์„ฑ์— ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค.
  • ํ•˜์ง€๋งŒ ๋„ˆ๋ฌด ๋งŽ์€ ์‹œ๊ฐ„์„ ์ฐพ๋Š” ๊ฒƒ์€ ์˜คํžˆ๋ ค ์ƒ์‚ฐ์„ฑ์— ์ €ํ•ด๋˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์ผ๋‹จ ์ฐพ์•„๋ณด๊ณ  ๊ผญ ๋ฌผ์–ด๋ณด์ž.
  • ํ˜„ ์ƒํ™ฉ์—์„œ 2๊ฐœ์˜ ํŒ€์—์„œ ์šฐ๋ฆฌํŒ€์ด ์ฃผ๋„ํ•˜๋Š” ์—ญํ• ์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ถ€๋„๋Ÿฝ๋”๋ผ๋„ ๋‚ด๊ฐ€ ํ˜„์žฌํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ๋“ค์„ ๊ณต์œ ํ•ด์•ผ ํ•œ๋‹ค.
  • ๋‚˜๋ณด๋‹ค ํŒ€ ์ „์ฒด์˜ ์ƒ์‚ฐ์„ฑ์„ ๋†’ํ˜€ ๋ฆฌ๋”ฉํ•  ์ˆ˜ ์žˆ๋Š” ์ž…์žฅ์ด ๋˜๋ ค๋ฉด, ๊ฐœ์ธ์ ์ธ ๊ฐ์ •์€ ์–ด๋Š์ •๋„ ๋œ์–ด๋‚ด์•ผ ํ•œ๋‹ค.
  • ์šฉ๊ธฐ๋ฅผ ๊ฐ–๊ณ  ์ง„ํ–‰ํ•˜์ž. ์•ˆ ์ฃฝ๋Š”๋‹ค. ์š• ํ•œ๋ฒˆ ๋จน์œผ๋ฉด ๋œ๋‹ค.
  • ๋…ธ๋ ฅ, ์ฑ…์ž„, ์„ฑ์žฅ๋ณด๋‹ค ์žฌ๋ฏธ๋ผ๋Š” ๋ง์„ ๊ธฐ์–ตํ•˜๋ฉฐ ์‚ด์ž.
  • ์žฌ๋ฏธ์žˆ๋‹ค๋ฉด ์‹œํ‚ค์ง€ ์•Š์•„๋„ ํ•  ๊ฒƒ.
  • ๋ˆ„๊ฐ€ ๋‚˜๋ฅผ ํ‚ค์›Œ์ค€๋‹ค๋Š” ์ƒ๊ฐ์„ ํ•˜์ง€ ๋งˆ๋ผ. ์ด๊ฑด ํ•ญ์ƒ ํ–ˆ๋˜ ์ƒ๊ฐ์ด๋‹ค. ์ธ์ƒ์€ ํ˜ผ์ž๋‹ค.
  • ์–ด์„คํ”„๊ฒŒ ์•„๋Š” ๊ฒƒ์ด ์ œ์ผ ๋ฌด์„ญ๋‹ค. ๋ชจ๋ฅด๋ฉด ๋ชจ๋ฅธ๋‹คํ•˜๋Š” ์šฉ๊ธฐ๋ฅผ ๊ฐ€์ง€์ž.
  • ์ผ๋‹จ legacy์— ๊ตฌํ˜„์„ ๋งž์ถ”๋Š” ๊ฒƒ์„ ๋จผ์ €ํ•œ๋‹ค. ์ผ๋‹จ ์„œ๋น„์Šค๊ฐ€ ๋‚˜๊ฐ€๋Š” ๊ฒƒ์ด ์šฐ์„ 
  • ๊ตฌํ˜„ํ•˜๊ธฐ ์ „์—, ๊ธฐ์กด์— ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ๋ช…ํ™•ํ•˜๊ฒŒ ์•ˆ ์ƒํƒœ์—์„œ ์ž‘์—…ํ•˜์ž. ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๊ณ„์† ๋ฐ”๊พธ๊ฒŒ ๋œ๋‹ค.
  • โ€œ์Šน์ž ๋…์‹โ€์ด๋‹ค. ํ—ˆํˆฌ๋ฃจ ์“ธ ์‹œ๊ฐ„์ด ์—†๋‹ค.
  • ๋‚ด ๊ฐ€์น˜๋ฅผ ๋†’์—ฌ์•ผ ํ•œ๋‹ค.
  • ์™ธ๋ชจ, ์‹ค๋ ฅ, ํŒ๋‹จ, ํ†ต์ฐฐ, ์ •์น˜, ์ฒด๋ ฅ
    • ๋ฌด์—‡๋•Œ๋ฌธ์— ๋ชปํ–ˆ๋‹ค๋Š” ํ•‘๊ณ„ ๋Œ€์ง€ ๋ง์ž.
    • ํŒจ๋ฐฐ์ž๋กœ ์‚ด์ง€๋ง์ž.
  • ๊ทธ๋Ÿฌ๋ฉด์„œ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์€ ํฌ์šฉํ•˜์ž. ๊ทธ ์‚ฌ๋žŒ๋“ค์˜ ๋ถ€์กฑํ•œ ๋ฉด, ํ•„์š”ํ•œ ์ ์ด ์žˆ์„ ๋•Œ ์–ธ์ œ๋“  ์ง„์‹ฌ์œผ๋กœ ๋„์™€์ฃผ๋Š” ์‚ฌ๋žŒ์ด ๋˜์ž.
  • ๋‹จ, ๋‚˜์— ๋Œ€ํ•œ ์กด๊ฒฝ์‹ฌ์ด ์—†์ด ๋Œ€ํ•˜๋Š” ์‚ฌ๋žŒ์—๊ฒŒ๋Š” ๊ทธ์— ์ƒ์‘ํ•˜๋Š” ๋Œ€๊ฐ€๋ฅผ ์น˜๋ฅด๊ฒŒ ํ•˜์ž.
  • ๋‚ด ํŒ๋‹จ์— ์–ด๋Š์ •๋„ ํ™•์‹ ์„ ๊ฐ€์ง€์ž.
    • ๋‹ค๋งŒ, ๋‚˜๋ณด๋‹ค ์˜ค๋žœ ์‹œ๊ฐ„์„ ์Ÿ๊ณ  ๊ทธ์— ๋Œ€ํ•œ ์‹ ๋…์ด ์žˆ๋Š” ์‚ฌ๋žŒ์—๊ฒŒ๋Š” ์˜ˆ์™ธ๋‹ค.
    • ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋Š” ๋‚ด ํŒ๋‹จ์ด ๋ณดํ†ต ๋งž๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์€ ๊ฒƒ ๊ฐ™๋‹ค.
  • ์•„์‰ฌ์šธ ๊ฒƒ ์—†๋Š” ์‚ฌ๋žŒ์ด ๋˜์ž. ๋‚ด ์‹œ๊ฐ„์€ ๊ธˆ์ด๋‹ค.
  • Work Super Hard!