<2์ฃผ์ฐจ - ๊ณผ์ >
์ด๋ฒ ์ฃผ์ฐจ ๊ณผ์ ๋ก '๋๋ง์ ๊ณ์ฐ๊ธฐ ๋ง๋ค๊ธฐ'๊ฐ ์๋ค.
์์ ๋ฐฐ์ด ๋ฌธ๋ฒ ๋ด์ฉ๋ค์ ํ์ฉํ์ฌ ๋ง๋ค์ด์ผํ๋ค!!
Lv1 ~ 4๊น์ง ์๋ค.๐
Lv3๊น์ง๋ ํ์,
Lv4๋ ํ ์ ์๋ค๋ฉด ๋์ ํด๋ณด๊ธฐ!(์ ํ)
<Lv1>
โ ๋ํ๊ธฐ, ๋นผ๊ธฐ, ๋๋๊ธฐ, ๊ณฑํ๊ธฐ ์ฐ์ฐ์ ์ํํ ์ ์๋ Calculator ํด๋์ค๋ฅผ ๋ง๋ค๊ธฐ
โก ์์ฑํ ํด๋์ค๋ฅผ ์ด์ฉํ์ฌ ์ฐ์ฐ์ ์งํํ๊ณ ์ถ๋ ฅํ๊ธฐ
<Lv2>
โ Lv1์์ ๋ง๋ Calculator ํด๋์ค์ “๋๋จธ์ง ์ฐ์ฐ”์ด ๊ฐ๋ฅํ๋๋ก ์ฝ๋๋ฅผ ์ถ๊ฐํ๊ณ , ์ฐ์ฐ ์งํ ํ ์ถ๋ ฅ
<Lv3>
โ ์๋ ๊ฐ๊ฐ์ ํด๋์ค๋ค์ ๋ง๋ค๊ณ ํด๋์ค๊ฐ์ ๊ด๊ณ๋ฅผ ๊ณ ๋ คํ์ฌ Calculator ํด๋์ค์ ๊ด๊ณ ๋งบ๊ธฐ
- AddOperation(๋ํ๊ธฐ)
- SubstractOperation(๋นผ๊ธฐ)
- MultiplyOperation(๊ณฑํ๊ธฐ)
- DivideOperation(๋๋๊ธฐ)
โก Calculator ํด๋์ค์ ๋ด๋ถ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ๊ธฐ
โข ๊ด๊ณ๋ฅผ ๋งบ์ ํ ํ์ํ๋ค๋ฉด ๋ณ๋๋ก ๋ง๋ ์ฐ์ฐ ํด๋์ค์ ์ธ์คํด์ค๋ฅผ Calculator ๋ด๋ถ์์ ์ฌ์ฉ!
(Lv2 ์ ๋น๊ตํ์ฌ ์ด๋ ํ ์ ์ด ๊ฐ์ ๋์๋์ง ์ค์ค๋ก ์๊ฐํด ๋ณด๊ธฐ - hint. ํด๋์ค์ ์ฑ
์(๋จ์ผ์ฑ
์์์น))
<Lv4>
โ AbstractOperation๋ผ๋ ์ถ์ํ๋ ํด๋์ค๋ฅผ ๋ง๋ค๊ธฐ
โก ๊ธฐ์กด์ ๊ตฌํํ AddOperation(๋ํ๊ธฐ), SubtractOperation(๋นผ๊ธฐ), MultiplyOperation(๊ณฑํ๊ธฐ), DivideOperation(๋๋๊ธฐ)
ํด๋์ค๋ค๊ณผ ๊ด๊ณ๋ฅผ ๋งบ๊ณ Calculator ํด๋์ค์ ๋ด๋ถ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ๊ธฐ
โข ์ค์ํํธ์ ์ด๋ค ๋ฌธ๋ฒ์ ์ด์ฉํ์ฌ ์ถ์ํํ ์ ์์์ง ์๊ฐํด ๋ณด๊ธฐ
(Lv3 ์ ๋น๊ตํด์ ์ด๋ ํ ์ ์ด ๊ฐ์ ๋์๋์ง ์ค์ค๋ก ์๊ฐํด ๋ณด๊ธฐ - hint. ํด๋์ค๊ฐ์ ๊ฒฐํฉ๋, ์์กด์ฑ(์์กด์ฑ์ญ์ ์์น))
์ผ๋จ, ์ค๋์ Lv3๊น์ง ํด ๋ณด์๋ค.
๋จ๊ณ๋ณ๋ก github์ ์ฌ๋ ค๋จ๋ค!
Lv4 ๋ด์ผ ์ค์ ์ค์ผ๋ก ํ ๋ฒ ๋์ ํด ๋ณผ ์์ ์ด๋ค.โ๐ป
<Lv1>
<Lv2>
์ด๋ ๊ฒ Double ํ์
๋ผ๋ฆฌ ๋๋จธ์ง ์ฐ์ฐ์ ํ๋ ค๊ณ ํ๋ฉด, ์์ ๊ฐ์ ์๋ฆผ์ด ๋ฌ๋ค.
์ถ์ฒํด์ค๋๋ก truncatingRemainder์ ์ฌ์ฉํด์ฃผ์๋ค!
.truncatingRemainder ์ ์ฌ์ฉํ๋ฉด Double ํ์
์ผ๋ก๋ ๋๋จธ์ง๋ฅผ ๋ฆฌํด ๋ฐ์ ์ ์๋๋ณด๋ค!
์ด๋ ๊ฒ ํด์คฌ๋๋, 10 % 3 = 1
์ ๋๋ก ์๋ํ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
<Lv3>
AddOperation(๋ํ๊ธฐ), SubstractOperation(๋นผ๊ธฐ),
MultiplyOperation(๊ณฑํ๊ธฐ), DivideOperation(๋๋๊ธฐ) ํด๋์ค๋ฅผ ๋ง๋ค์๋ค.
<์ฒ์ ๋ง๋ค์๋ Calculator ํด๋์ค์ ๊ด๊ณ ๋งบ๊ธฐ>
→ ๊ฐ ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ๋ด์ ๋ณ์(ํ๋กํผํฐ)๋ฅผ ์ ์ธํ๊ณ , ์ด๊ธฐํ๋ฅผ ํด์ฃผ์๋ค.
Lv1-2 ์ฒ๋ผ ๊ฐ๊ฐ์ ์ธ์คํด์ค๋ฅผ ์์ฑํด์ฃผ๊ณ ,
ํด๋์ค ๋ณ ํจ์๋ฅผ ์คํํด์ฃผ์๋ค!
ํ๋์ ํด๋์ค์ ์ฌ๋ฌ๊ฐ์ง ๊ธฐ๋ฅ์ ๋ฃ์ง๋ง๊ณ ,
Lv3์์ ๊ฐ๊ฐ์ ๊ธฐ๋ฅ์ ๋ด๊ณ ์๋ ํด๋์ค๋ค์ ๋ง๋ค์ด์ ๊ด๊ณ๋ฅผ ๋งบ๊ฒ ํ์๊น?
์ด๋ค ์ ์ด ๊ฐ์ ๋์์๊น?๐ง
ํด๋์ค์ ๋จ์ผ์ฑ
์์์น์ ๋ํด์ ์ฐพ์๋ณด์๋ค.
ํ๋์ ๊ฐ์ฒด์ ๋๋ฌด ๋ง์ ์ฑ
์์ด ๋ฌผ๋ ค์์ ๊ฒฝ์ฐ, ํ๋ก์ ํธ์์ ํด๋น ๊ฐ์ฒด์ ์์กด์ฑ์ด ๋์์ง๊ฒ ๋๋ค.
์ด๋ฌํ ํ์์ ๊ฐ์ฒด์งํฅ์ ์ฃผ์ ํน์ง ์ค ํ๋์ธ ์บก์ํ๋ฅผ ์ ๋ฉด์ผ๋ก ๋ถ์ ํ๋ค.
๊ทธ๋ฟ๋ง์ด ์๋๋ผ, ๊ฐ์์ ์ฝ๋๊ฐ ์๋ก ์์กด๋ ๊ฒฝ์ฐ,
์ฝ๋ ์์ ์ ๋ฐ๋ฅธ ์ํฅ๋ ์ญ์ ๋์์ง๊ณ , ๋ฒ์ ๋ํ ๋์ด์ง๋ค.
๋ง์ฝ ์ฝ๋์ ๊ท๋ชจ๊ฐ ํฌ๊ฑฐ๋ ๋ณต์ก์ฑ์ด ์ฌํ๋ค๋ฉด,
์ฝ๋ ์์ ์ ๋ง๋ค ์ค๋ง๊ฐ์ง ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฒ์ด๋ค.๐คฏ
๊ทธ๋ฟ๋ง ์๋๋ผ ์ฝ๋๊ฐ ๋ณ๊ฒฝ๋๋ ๊ณผ์ ์์ ์ด๋ฏธ ์ ํด์ง ์ฝ๋์ ๋ฆฌํฉํ ๋ง๋ ํ์ํ ์ ์๋ค.
๊ทธ ๋ฆฌํฉํ ๋ง์ด ๋ฆฌํฉํ ๋ง์ ๋ถ๋ฅด๋ ์ฐธ์ฌ๊ฐ ์ผ์ด๋ ์ ์๊ณ , ์ฝ๋๊ฐ ์ ์ ๋ณต์กํด์ง๋ ์ํฉ์ด ๋ฐ์ํ๋ ๋ฌธ์ ์ ์ด ์๋ค.
(Code Refactoring - ์ฌ์ฉํ์ง ์๋ ์ฝ๋ ๋๋ ์ค๋ณต ์ฝ๋๋ฅผ ์ง์ฐ๊ณ , ์ฝ๋์ ๋ก์ง์ ๊นจ๋ํ๊ณ ์ดํดํ๊ธฐ ์ฝ๊ฒ ๋์์ธํ๋ ๊ฒ)
๊ทธ๋์ ์ด๋ฌํ ์ํฉ๋ค์ ๋ฐฉ์งํ๊ณ ์ ์๋ฆฝ๋ ์์น์ผ๋ก,
'1๊ฐ์ฒด = 1์ฑ
์'์ ์ต๋ํ ๊ฐ์ฒด๋ฅผ ๊ฐ๊ฒฐํ๊ณ ๋ช
ํํ๊ฒ ์ค๊ณํ ๊ฒ์ ์๊ตฌํ๋ค๊ณ ํ๋ค! :-)
'iOS ์ฑ ๊ฐ๋ฐ ์ข ํฉ๋ฐ > TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
3์ฃผ์ฐจ_Swift ๋ฌธ๋ฒ์ข ํฉ๋ฐ ์ฌํ_(2์ผ์ฐจ)_ํด๋ก์ & ๊ณ ์ฐจํจ์ (4) | 2024.03.12 |
---|---|
3์ฃผ์ฐจ_Swift ๋ฌธ๋ฒ์ข ํฉ๋ฐ ์ฌํ_(1์ผ์ฐจ) (0) | 2024.03.11 |
2์ฃผ์ฐจ_Swift ๋ฌธ๋ฒ์ข ํฉ๋ฐ ๊ธฐ์ด_(3์ผ์ฐจ) (0) | 2024.03.06 |
2์ฃผ์ฐจ_Swift ๋ฌธ๋ฒ์ข ํฉ๋ฐ ๊ธฐ์ด_(2์ผ์ฐจ) (4) | 2024.03.05 |
2์ฃผ์ฐจ_Swift ๋ฌธ๋ฒ์ข ํฉ๋ฐ ๊ธฐ์ด_(1์ผ์ฐจ) (0) | 2024.03.04 |