iOS ์•ฑ ๊ฐœ๋ฐœ ์ข…ํ•ฉ๋ฐ˜/TIL

2์ฃผ์ฐจ_Swift ๋ฌธ๋ฒ• ๊ธฐ์ดˆ ๊ณผ์ œ_๊ณ„์‚ฐ๊ธฐ ๋งŒ๋“ค๊ธฐ

yeggrrr๐Ÿผ 2024. 3. 7. 20:23

<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์ฑ…์ž„'์„ ์ตœ๋Œ€ํ•œ ๊ฐ์ฒด๋ฅผ ๊ฐ„๊ฒฐํ•˜๊ณ  ๋ช…ํ™•ํ•˜๊ฒŒ ์„ค๊ณ„ํ•  ๊ฒƒ์„ ์š”๊ตฌํ•œ๋‹ค๊ณ  ํ•œ๋‹ค! :-)







728x90