TIL_20180108 ~ 20180113
08 Jan 2018 | TIL2018.01.08 todo
- JSON step6 ํผ๋๋ฐฑ ์ฒ๋ฆฌ / ๋ง๋ฌด๋ฆฌ
- main ํ๋ฆ์ ์ด
- while๋ฌธ์ ์ถ๊ฐํ๊ณ catch๋ธ๋ญ์์ break๋ฅผ ์ด์ฉํด์ ์๋ฌ์ํฉ์์์ ํ๋ฆ์ ์ด๋ ํ์ง๋ง, ๋ง์ง๋ง์ ์ ์์ ์ธ ์ผ์ด์ค์ผ๋ break๋ฅผ ์๋ฃ์ด์ ์์ ํ๋ก๊ทธ๋จ์ด ๋ฌดํ๋ฃจํ๋ฅผ ๋์์โฆ๊น์ง๋๋๋ค. : while์ ์ฐ๋ฉด ๊ผญ ๋ง์ง๋ง๋ก์ง๊น์ง ์ ์์ ์ผ๋ก ์คํ๋์๋๋ break๋ฅผ ๋ฃ์ด์ ํ๋ฆ ์ ์ด๋ฅผ ํ์!
- inputView์ readFile(): ์ฌ์ฌ์ฉํ ์์๋๊ตฌ์กฐ๋ก ๋ณ๊ฒฝ - ok
- OutputView์ showResult()ํจ์์์ ํ์์๋ ์ธ์
- main์ด ๋ณต์กํด์ง๋๋ผ๋, ํจ์ ๋ด๋ถ์์ switch๋ฌธ์ ์จ์ ๋ฌด์ธ๊ฐ ํ๋จํ๊ณ ๋ค๋ฅด๊ฒ ๋์ํด์ผํ๋ ๋ก์ง์ด ์์ผ๋ฉด ๊ทธ ํจ์๋ฅผ ๊ฐ๋จํ ๋ง๋๋๊ฒ ๋ ์ค์ํจ. ์ง๊ธ ์ํฉ์์๋ main์์ outputType(console or make file)์ ์๊ณ ์์ผ๋, OutputView์์ ํจ์๋ฅผ ํ๋๋ง ๋ถ๋ฅด๋๊ฑธ๋ก ์ฝ๋๋ฅผ ์ง์ main์ ๊ฐ๋จํ๊ฒ ๋ง๋ค๊ฒ ์๋๋ผ ์ง์ main์ ์๋ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ๋ฐ๋ก ํ์ํ ํจ์๋ฅผ ํธ์ถํ๋๊ฒ ๋ ์ฌํํ๊ณ ์์๋ณด๊ธฐ ์ฌ์ด ๊ตฌ์กฐ์.
- showResult() ์ง์ฐ๊ณ resultMessage์์ฑ, console์ ๊ฒฐ๊ณผ ์ถ๋ ฅ, ํ์ผ๋๋ ํ ๋ฆฌ๋ฅผ ์ธ์๋ก ๋ฐ์ file๋ง๋๋ ํจ์๋ก ์๊ฒ ๋๋๊ณ outputType์ ๋ฐ๋ผ
- main ํ๋ฆ์ ์ด
- JSON ํผ๋๋ฐฑ ์ ๋ฆฌ
- ํด๋ฆฐ์ฝ๋ ์ฑ ์ฝ๊ธฐ
- HIG ๋ฐํ๋ค์! : ๋ชจ๋ฐ์ผ ๊ธฐ์ค์ผ๋ก
- HCI๋ถ์ผ : ๋งฅํจํ ์ ํ๋ฉด์ด ์ฝ์์์ ํ๋ฉด(UI)์ผ๋ก ๋์ด๊ฐ๋ ์ฌ๋ฆฌํ์์ ํจ๊ป, ์ผ์ ์ํ์ ์๋ ๋์๋ค์ ์ ์ฉํด์ ์ปดํจํฐ์ ์คํํ๋ค. ์ด๋ฐ ์ฐ๊ตฌ๋ฅผ ํ๋ฉด์ ๋ง๋ค์ด์ง ๋ถ์ผ๊ฐ HCI๋ถ์ผ
- ๋์์ธ ๊ฐ์ด๋๋ผ์ธ์ ๋ฐ๊พธ๋ฉด ํญ์ ์๋ก์ด ์ฑ ์์ด์ฝ์ด ๋์ด
- ํผ์ ๊ณต๋ถํ ๊ฑฐ๋ฉด ์ ํ ์ฑ์ ๋๊ฐ์ด ๋ง๋ค๋๋ก ๋ ธ๋ ฅ. ๊ทธ๊ฒ๋ง ์ ๋ง๋ค๋ฉด ๋ ๋ฒจ3๋ ๋๋ ์ค๋ ฅ์ด ๋ ๋ฏ
TIL
- JSON step6 ํผ๋๋ฐฑ ์ฒ๋ฆฌ
- ์๋ฌํธ๋ค๋ง / ํ๋ฆ์ ์ด : ๋์ ๊ฒฝ์ฐ๋ main์ while๋ฌธ์ ์ถ๊ฐํด์ catch๋ฌธ ์์ break์ ์จ์ ํ๋ฆ ์ ์ด๋ฅผ ํ๋๋ฐ, ๋ง์ง๋ง์ ์ ์์ ์ธ ์ผ์ด์ค์ผ๋ break๋ฅผ ์๋ฃ์ด์ ์์ ํ๋ก๊ทธ๋จ์ด ๋ฌดํ๋ฃจํ๋ฅผ ๋์์โฆ๊น์ง๋๋๋ค. : while์ ์ฐ๋ฉด ๊ผญ ๋ง์ง๋ง๋ก์ง๊น์ง ์ ์์ ์ผ๋ก ์คํ๋์๋๋ break๋ฅผ ๋ฃ์ด์ ํ๋ฆ ์ ์ด๋ฅผ ํ์!
- ํจ์๋ฅผ ๊ฐ๋จํ๊ฒ: ํจ์๋ ์ด๋ค ์์น์์๋ ์ฌ์ฌ์ฉํ ์ ์๋ ํจ์๋ก ๋ง๋ค๋๋ก ๋
ธ๋ ฅํ๊ธฐ.
- ๋ง์ฝ ํจ์ ๋ด์์ switch-case๋ฅผ ์จ์ ๋ฌด์ธ๊ฐ๋ฅผ ๋น๊ตํ๊ณ ๊ทธ ์์์ ํจ์๋ฅผ ์คํํ๋ค๋ฉด, ์ฌ์ง์ด ๋ชจ๋ ์ผ์ด์ค์์ ํ์์๋ ์ธ์๊น์ง ํ๊บผ๋ฒ์ ๋ฐ์์ ์ฒ๋ฆฌํ๊ณ ์๋ค๋ฉด ๋ญ๊ฐ ์๋ชป๋ ํจ์ ์์ ์ธ์งํด์ผํ๋ค!
- ํจ์๋ฅผ ์ต๋ํ ์ฌํํ๊ฒ ๋ง๋ค๋ฉด, ์คํ๋ ค main์์ ํจ์๋ฅผ ํธ์ถํ๋ ์ฝ๋๊ฐ ๊ธธ์ด์ง์ง๋ผ๋ ํธ์ถ-๋ฆฌํดํ๋ ๊ด๊ณ๊ฐ ์ง๊ด์ ์ผ๋ก ๋๊ธฐ ๋๋ฌธ์ ์ผ๋จ ์ง๊ธ์ ๊ฐ์ฒด ์์ ์ฝ๋๊ฐ ๊ฐ๋จํด์ง๋๊ฒ์ด ๋ ์ค์ํ๋ค!
- ๋ค๋ฅธ ๋ฉค๋ฒ๋ค์ HIG๋ฌธ์์๋ํ ๋ฐํ๋ฅผ ๋ค์๋ค. (HIG: Human Interface Guidelines, ๋์์ธ ๊ท์น์ ์ค๋ช ํ๊ณ , ์์ ๋์์ ๋ํ ์ค๋ช ๊ณผ ๊ธฐ๋ฅ์ ์ธ ์ค๋ช ์ ํตํด ์ฑ ๊ฐ๋ฐ์ ์ด๋ป๊ฒ ํ๋ฉด ์ข์์ง์ ๋ํ ๊ฐ์ด๋๋ผ์ธ) ๋ด๊ฐ ์ฌ์ฉํ๋ ์ฑ ์ค์ ์์ธ๋ก ๋ง์ ์ฑ๋ค์ด ์ด ๊ฐ์ด๋๋ผ์ธ์ ์ ์งํค์ง ์๋ ๊ฒ ๊ฐ์๋ค. ์ฌ์ค ํ์์ ์ธ ์์๋ง ์งํค๋ฉด ์ ํ์คํ ์ด์ ์ฌ๋ผ๊ฐ๋ค๋๋ฐ, ๋๋ ์ด ๊ฐ์ด๋๋ผ์ธ์ ์ต๋ํ ํ์ฉํ๊ณ ์ง์ผ์ ์ ๋ง iOS๋ค์ด ์ฑ์ ๋ง๋ค๊ณ ์ถ๋ค. ๋นจ๋ฆฌ ์ฑ ๋ง๋ค๊ณ ์ถ๋ค!
2018.01.09 TODO
- JSON step6 ํผ๋๋ฐฑ ๋ง๋ฌด๋ฆฌ
- ๋จธ์ง๋๋ฉด ์นด๋๊ฒ์
- ์๋ฌํธ๋ค๋ง/ํ๋ฆ์ ์ด ์์ ์ฐพ์๋ณด๊ณ ๊ณต๋ถํ๊ธฐ
- ํด๋ฆฐ์ฝ๋์ฝ๊ธฐ
- JSON๋ฏธ์ ๊ณผ์ wiki์ ์ ๋ฆฌ TIL
- ํด๋ฆฐ์ฝ๋ ์กฐ๊ธ ์ฝ์
- JSON ์๋ฃ!
- ์นด๋๊ฒ์ ์ง์
- ์์ฑ์ ๋ํด description - getํ๋กํผํฐ / NSObject : ๊ตฌ์กฐ์ฒด๋ฅผ CustomStringConvertible ํ๋กํ ์ฝ์ ์ค์ํ๋๋ก ๊ตฌํํ๋ฉด description์์ฑ์ ์ถ๋ ฅํ ๋ ์ฌ์ฉํ ์ ์๋ค.
- ์ปดํ์ผ๋ฌ๊ฐ ๋ฉ์๋ ๋งค๊ฐ๋ณ์์ ํ์ ์ ๋ช ํํ๊ฒ ์ ์ถํ ์ ์์ผ๋ฉด CardDeck.Suit.heart ๋์ .heart ๋ก ๋์ฒด ๊ฐ๋ฅ : ํ๋ผ๋ฏธํฐ ํ์ ์ enumํ์ ์ผ๋ก ๋ช ์ํ๋ค๋ฉด, .heart์ฒ๋ผ enum์ผ์ด์ค๋ง ์์ฑํด๋ ์ปดํ์ผ๋ฌ๊ฐ ํ์ ์ ์ถ๋ฅผ ํ ์ ์๋ค!
2018.01.10 TIL
- ์นด๋๊ฒ์ ํผ๋๋ฐฑ ์ฒ๋ฆฌ
- JSON๋ฏธ์ step2 ํผ๋๋ฐฑ
- ํด๋ฆฐ์ฝ๋์ฝ๊ธฐ
2018.01.11 TODO
- ์นด๋๊ฒ์ step1 ํผ๋๋ฐฑ ์ฒ๋ฆฌ
- ์นด๋๊ฒ์ step2 ์์
- JSON step2 ํผ๋๋ฐฑ
- ์ฝ๋๋ฆฌ๋ทฐ ์ฝ๋ฉํธ ํผ๋๋ฐฑ : Before Code review > After Code review
- ์๋กญ๊ฒ ์ ์ฉํ๋ ๊ฐ๋ ์ ๋ฆฌ
2018.01.12 TODO
- ์นด๋๊ฒ์ step2 ํผ๋๋ฐฑ ์ฒ๋ฆฌ -> ๋ค์๋จ๊ณ๋ก!
- ์นด๋๊ฒ์ README์ ๋ฐ์ดํธ
- JSON step2 ํผ๋๋ฐฑ
- ํด๋ฆฐ์ฝ๋์ฝ๊ธฐ
TIL
- ์นด๋๊ฒ์ PR๋ณด๋
CardGame README
- userInput์ enum์ผ๋ก ๊ด๋ฆฌ.
let v = menuInput(rawValue: "1")
: enum์ rawValue๋ฅผ ๋ฃ์ผ๋ฉด ๊ทธ ์ผ์ด์ค์ ํด๋นํ๋ menuInput.one์ด ๋ง๋ค์ด์ง๋๊ฒ! ๋์ ์ด ๋ฐฉ๋ฒ์ v๊ฐ menuInput?์ผ๋ก ์ต์ ๋๋ก ๋ง๋ค์ด์ง๊ธฐ๋๋ฌธ์ ์ต์ ๋์ ํ์ด์ค ์ ์๋ ๋ฉ์๋๊ฐ ํ์ํ๊ธฐ๋ ํจ. ์๋์ ๋ฐฉ๋ฒ ์ฐธ๊ณenum gameMenu: String { case one = "1" case two = "2" case three = "3" case quitGame = "q" case wrongInput } // ์ด๋ ๊ฒ wrongInput์ฒ๋ผ rawValue๋ฅผ ๋ฃ์ง์์ ์ผ์ด์ค๋ฅผ ํ๋ ๋ง๋ ๋ค! func select(rawValue: String) -> gameMenu { if let inputMenu = gameMenu(rawValue: rawValue) { return inputMenu } else { return .wrongInput } }
enum์ rawValue๋ฅผ ์ด์ฉํด์ ๊ทธ enum์ ํน์ ํ ์ผ์ด์ค(rawValue์ ์ผ์นํ๋)๊ฐ ๋ง๋ค์ด์ง๋ ๋ฐฉ๋ฒ์ด ์์. ํนํ switch-case๋ก ๋น๊ตํ ๋ enum์ ์ด์ฉํ๋ฉด ์ฌ์ฉ์์ input์ ์ ํํ๋ค๋ ์๋ฏธ๋ ์์ง๋ง ์ปดํ์ผ๋ฌ๊ฐ ๋น ์ง ์ผ์ด์ค๋ฅผ ๋ฏธ๋ฆฌ ์๋ ค์ค ์ ์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ์์ ์ค์๋ฅผ ๋ฐฉ์ดํ๋๋ฐ์๋ ์ฉ์ดํ ๋ฉด์ด ์์.
-
EnumCollection ์ถ๊ฐ -
static let allValue
๋ฅผ ์ฌ์ฉํ์ง ์๊ณ enum case๋ฅผ collection์ผ๋ก ๋ง๋ค์ด์ฃผ๋ ํ์ฅ ๋ฐฉ๋ฒ์ ์ฐพ์์ ๊ณต๋ถํ๊ณ ์ ์ฉ ์ฐธ๊ณ ๋ธ๋ก๊ทธ -
showCard()์ resultMessage() ํฉ์นจ
JSON์์ ๋ฐฐ์ด ๊ฒ
- ํ๋กํ ์ฝ์ ์ธ์๋ก ๋๊ธฐ๋ ๊ตฌ์กฐ / ํ๋กํ ์ฝ๋ก ์ถ์ํํ๋๊ฒ
- enum์ ์ฐ๊ด๊ฐ์ผ๋ก ํ๋ก๊ทธ๋จ์ ํ์ํ ํ์ ๋ค์ ๋ฌถ์ด๋์
- Array / object ์ค์ฒฉ๋ (์๊ฐ๋ณด๋ค ์ฝ๊ฒ?)๊ฐ์ด ํด๊ฒฐํ ์์์๋ค.
- ๋ก์ง - DTO - ๋ก์ง DTO
- Input - Grammar - Parser - (ConvertTarget[String] - DataTypeConverter) - ValueCounter - 1. CountInfo 2. ResultData - OutputView
- ResultData๋ JSONData์ ์ฝ๋ ์ ์์ ๊ฐ๋ค์ ํ๋์ฉ ๋ค ๊ฐ์ ธ์ค๋ฉด์ String์ผ๋ก ํ๋ณํํจ. ๊ทผ๋ฐ ์ด๊ฒ๋ ํ๋กํ ์ฝ๋ก ๋นผ์ํ ์์์๊ฑฐ๊ฐ์
- ํ๋ฆ์ ์ด๊ฐ ๋ฌธ์
enum JSONData { case IntegerValue(Int) case StringValue(String) case BoolValue(Bool) case ObjectValue(Dictionary<String, JSONData>) case ArrayValue([JSONData]) }
2018.01.13
- JSONParser๋ฏธ์ ํ๊ณ !!
- ์นด๋๊ฒ์ step3 ํ๋ฆฌ๋ทฐ
Comments