Upgrade to Pro — share decks privately, control downloads, hide ads and more …

다사다난했던_코드_갈아치우기

Avatar for Jenni Jenni
December 03, 2019

 다사다난했던_코드_갈아치우기

다사다난했던 코드 갈아치우기 - 조지은
야놀자 iOS 앱 캘린더 모듈을 신형 아키텍처로 교체하면서 경험했던 다사다난했던 코드 갈아치우기회고 발표자료입니다. 해당 자료는 야놀자 Tech야, 놀자 2회 Women in Tech 밋업에서 발표된 내용입니다.

[Tech야, 놀자 2회 Women in Tech]
일시 및 장소
날짜: 12/03 (화) 19:00-21:00 (7-9 p.m.)
장소: 야놀자 7층 (서울시 강남구 테헤란로 108길 42)

Avatar for Jenni

Jenni

December 03, 2019

Other Decks in Programming

Transcript

  1. ׮ࢎ׮դ೮؍௏٘тই஖਋ӝ   JG "ఋੑ \ j ^FMTFJG #ఋੑ \

    j ^FMTFJG $ఋੑ \ j ^FMTFJG %ఋੑ \ j ^
  2. ׮ࢎ׮դ೮؍௏٘тই஖਋ӝ   JG "ఋੑ \ j ^FMTFJG #ఋੑ \

    j ^FMTFJG $ఋੑ \ j ^FMTFJG %ఋੑ \ j ^ ചݶо
  3. ׮ࢎ׮դ೮؍௏٘тই஖਋ӝ   JG "ఋੑ \ j ^FMTFJG #ఋੑ \

    j ^FMTFJG $ఋੑ \ j ^FMTFJG %ఋੑ \ j ^ ചݶо JG "ఋੑ \ j ^FMTFJG #ఋੑ \ j ^FMTFJG $ఋੑ \ j ^FMTFJG %ఋੑ \ j ^ ചݶա
  4. ׮ࢎ׮դ೮؍௏٘тই஖਋ӝ   JG "ఋੑ \ j ^FMTFJG #ఋੑ \

    j ^FMTFJG $ఋੑ \ j ^FMTFJG %ఋੑ \ j ^ ചݶо JG "ఋੑ \ j ^FMTFJG #ఋੑ \ j ^FMTFJG $ఋੑ \ j ^FMTFJG %ఋੑ \ j ^ ചݶա JG "ఋੑ \ j ^FMTFJG #ఋੑ \ j ^FMTFJG $ఋੑ \ j ^FMTFJG %ఋੑ \ j ^ ചݶ׮
  5. ׮ࢎ׮դ೮؍௏٘тই஖਋ӝ   JG "ఋੑ \ j ^FMTFJG #ఋੑ \

    j ^FMTFJG $ఋੑ \ j ^FMTFJG %ఋੑ \ j ^ ചݶо JG "ఋੑ \ j ^FMTFJG #ఋੑ \ j ^FMTFJG $ఋੑ \ j ^FMTFJG %ఋੑ \ j ^ ചݶա JG "ఋੑ \ j ^FMTFJG #ఋੑ \ j ^FMTFJG $ఋੑ \ j ^FMTFJG %ఋੑ \ j ^ ചݶ׮ #ఋੑ਷࠺ૉפझীࢲ࢏ઁ೧઱ࣁਃ
  6. ׮ࢎ׮դ೮؍௏٘тই஖਋ӝ   JG "ఋੑ \ j ^FMTFJG #ఋੑ \

    j ^FMTFJG $ఋੑ \ j ^FMTFJG %ఋੑ \ j ^ ചݶо JG "ఋੑ \ j ^FMTFJG #ఋੑ \ j ^FMTFJG $ఋੑ \ j ^FMTFJG %ఋੑ \ j ^ ചݶա JG "ఋੑ \ j ^FMTFJG #ఋੑ \ j ^FMTFJG $ఋੑ \ j ^FMTFJG %ఋੑ \ j ^ ചݶ׮ #ఋੑ਷࠺ૉפझীࢲ࢏ઁ೧઱ࣁਃ ചݶоীࢲ݅j߄Լ઱ࣁਃ
  7. ࢶఖ٘۽੔   protocol DateSelectorDrawProtocol { func draw(type: Type) }

    class CircleLineDraw: DateSelectorDrawProtocol { func draw(type: Type) { … switch type { case .undraw: // ইޖѪب ࢶఖغ૑ ঋ਷ ҃਋ case .single: // ࢎਊ੗о ೞա੄ զ૞ܳ ࢶఖೠ ҃਋ case .left: // ࢶఖػ զ૞о ৽ଃੋ ҃਋ case .right: // ࢶఖػ զ૞о য়ܲଃੋ ҃਋ … }
  8. ࢶఖ٘۽੔   protocol DateSelectorDrawProtocol { func draw(type: Type) }

    class CircleLineDraw: DateSelectorDrawProtocol { func draw(type: Type) { … switch type { case .undraw: // ইޖѪب ࢶఖغ૑ ঋ਷ ҃਋ case .single: // ࢎਊ੗о ೞա੄ զ૞ܳ ࢶఖೠ ҃਋ case .left: // ࢶఖػ զ૞о ৽ଃੋ ҃਋ case .right: // ࢶఖػ զ૞о য়ܲଃੋ ҃਋ … } "ఋੑ
  9. ࢶఖ٘۽੔   protocol DateSelectorDrawProtocol { func draw(type: Type) }

    class CircleFillDraw: DateSelectorDrawProtocol { func draw(type: Type) { … switch type { case .undraw: // ইޖѪب ࢶఖغ૑ ঋ਷ ҃਋ case .single: // ࢎਊ੗о ೞա੄ զ૞ܳ ࢶఖೠ ҃਋ case .left: // ࢶఖػ զ૞о ৽ଃੋ ҃਋ case .right: // ࢶఖػ զ૞о য়ܲଃੋ ҃਋ … } #ఋੑ
  10. ࢶఖ٘۽੔   protocol DateSelectorDrawProtocol { func draw(type: Type) }

    class CircleFillDraw: DateSelectorDrawProtocol { func draw(type: Type) { … switch type { case .undraw: // ইޖѪب ࢶఖغ૑ ঋ਷ ҃਋ case .single: // ࢎਊ੗о ೞա੄ զ૞ܳ ࢶఖೠ ҃਋ case .left: // ࢶఖػ զ૞о ৽ଃੋ ҃਋ case .right: // ࢶఖػ զ૞о য়ܲଃੋ ҃਋ … } #ఋੑ ࢖пഋ ߹ݽন  ٘ܖ৬_٘ܖ৬_
  11. 5FDIঠ ֥੗ ٣੗ੋ࠙ࢳ   #BDL#VUUPO .PEBM $MPTF#VUUPO 'VMM4DSFFO $MPTF#VUUPO

    'VMM4DSFFO class DateSelectorNaviView: UIView { @IBOutlet weak var backButton: UIButton! @IBOutlet weak var resetButton: UIButton! @IBOutlet weak var titleLabel: UILabel! @IBOutlet weak var guideLabel: UILabel? }
  12. 5FDIঠ ֥੗ ಂషܻಁఢ੸ਊ   protocol DateSelectorFactory { func create()

    -> DateSelector } "ఋੑ%BUF4FMFDUPS %BUF4FMFDUPS'BDUPSZ
  13. 5FDIঠ ֥੗ ಂషܻಁఢ੸ਊ   protocol DateSelectorFactory { func create()

    -> DateSelector } "ఋੑ%BUF4FMFDUPS %BUF4FMFDUPS'BDUPSZ class ATypeDateSelector: DateSelectorFactory { func create() -> DateSelector { let navi = ATypeNavi() let top = ATypeTop() let content = ATypeContent() let bottom = ATypeBottom() } }
  14. 5FDIঠ ֥੗ ಂషܻಁఢ੸ਊ   protocol DateSelectorFactory { func create()

    -> DateSelector } "ఋੑ%BUF4FMFDUPS %BUF4FMFDUPS'BDUPSZ #ఋੑ%BUF4FMFDUPS
  15. 5FDIঠ ֥੗ ಂషܻಁఢ੸ਊ   protocol DateSelectorFactory { func create()

    -> DateSelector } "ఋੑ%BUF4FMFDUPS %BUF4FMFDUPS'BDUPSZ #ఋੑ%BUF4FMFDUPS class BTypeDateSelector: DateSelectorFactory { func create() -> DateSelector { let navi = BTypeNavi() let top = BTypeTop() let content = BTypeContent() let bottom = BTypeBottom() } }
  16. 5FDIঠ ֥੗ ಂషܻಁఢ੸ਊ   protocol DateSelectorFactory { func create()

    -> DateSelector } "ఋੑ%BUF4FMFDUPS %BUF4FMFDUPS'BDUPSZ #ఋੑ%BUF4FMFDUPS $ఋੑ%BUF4FMFDUPS
  17. 5FDIঠ ֥੗ ಂషܻಁఢ੸ਊ   protocol DateSelectorFactory { func create()

    -> DateSelector } "ఋੑ%BUF4FMFDUPS %BUF4FMFDUPS'BDUPSZ #ఋੑ%BUF4FMFDUPS $ఋੑ%BUF4FMFDUPS class CTypeDateSelector: DateSelectorFactory { func create() -> DateSelector { let navi = CTypeNavi() let top = CTypeTop() let content = CTypeContent() let bottom = CTypeBottom() } }
  18. 5FDIঠ ֥੗ ಂషܻಁఢ੸ਊ   protocol DateSelectorFactory { func create()

    -> DateSelector } "ఋੑ%BUF4FMFDUPS %BUF4FMFDUPS'BDUPSZ #ఋੑ%BUF4FMFDUPS $ఋੑ%BUF4FMFDUPS class CTypeDateSelector: DateSelectorFactory { func create() -> DateSelector { let navi = CTypeNavi() let top = CTypeTop() let content = CTypeContent() let bottom = CTypeBottom() } } ׮਺ܾܻૉীకਕ઱ࣁਃ 1M[