clean code ์ œ 3์žฅ ํ•จ์ˆ˜

ํ•จ์ˆ˜๋ฅผ cleanํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ• 1. ์ž‘๊ฒŒ๋งŒ๋“ค๊ธฐ 2. ๋ธ”๋ก๊ณผ ๋“ค์—ฌ์“ฐ๊ธฐ 3. ํ•œ๊ฐ€์ง€ ๊ธฐ๋Šฅ๋งŒ 4. ์„œ์ˆ ์ ์ธ ๋„ค์ด๋ฐ 5. ํ•จ์ˆ˜ ์ธ์ˆ˜ 6. ๋ถ€์ˆ˜ํšจ๊ณผx 7. ๋ช…๋ น์กฐํšŒ 8. ์˜ค๋ฅ˜์˜ˆ์™ธ 9. ๊ตฌ์กฐ์ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์šฐ์„  bad ํ•จ์ˆ˜ ์˜ˆ์‹œ ๋‘๊ฒน์œผ๋กœ ์ค‘์ฒฉ๋œ if๋ฌธ์œผ๋กœ ๋ช…ํ™•ํ•˜์ง€ ์•Š์€ ํ”Œ๋ž˜๊ทธ, ๋ฌธ์ž์—ด,ํ•จ์ˆ˜ ํ˜ธ์ถœ์„ ํ•˜๊ณ  ์žˆ์Œ. -> ํ•จ์ˆ˜๊ฐ€ ๋„ˆ๋ฌด ๊ธธ๊ณ , ์–ด๋–ค ์ผ์„ ํ•˜๋Š”์ง€ ์•Œ๊ธฐ ํž˜๋“ฆ. 1. ์ž‘๊ฒŒ ๋งŒ๋“ค๊ธฐ ํ•œ ํ•จ์ˆ˜์˜ ๊ธธ์ด๋Š” 20์ค„๋„ ๊ธธ๋‹ค๊ณ  ํ•œ๋‹ค. 2. ๋ธ”๋ก๊ณผ ๋“ค์—ฌ์“ฐ๊ธฐ๋Š” ํ•œ์ค„์ด์–ด์•ผ ํ•œ๋‹ค. if, else, while ๋ฌธ์— ๋“ค์–ด๊ฐ€๋Š” ์ฝ”๋“œ๋Š” ํ•œ์ค„์ด์–ด์•ผํ•˜๊ณ  ๋Œ€๊ฐœ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด์•ผํ•œ๋‹ค. func rednerPageWithSetupAndTeardowns(pageData: PageData, isSuite: Bool) -> String { if (isTe..

computer science 2023. 4. 4. 23:56
clean code ์ œ 1์žฅ ๊นจ๋—ํ•œ ์ฝ”๋“œ

์ €์ž๋Š” 00๋…„๋„ ํ›„๋ฐ˜์— ๋งํ–ˆ๋˜ ํšŒ์‚ฌ์˜ ์˜ˆ์‹œ๋ฅผ ์ œ์‹œํ•œ๋‹ค. ํ•œ ์†Œํ”„ํŠธ์›จ์–ด ํšŒ์‚ฌ๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ ํ•ด๋‹น ์—…์ฒด๋Š” ์ถœ์‹œ์— ๋ฐ”๋น  ์ฝ”๋“œ๋ฅผ ๋งˆ๊ตฌ๋งˆ๊ตฌ ์งฐ๋‹ค๊ณ  ํ•œ๋‹ค. ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋ ์ˆ˜๋ก ์ฝ”๋“œ๋Š” ์—‰๋ง์ด ๋˜์–ด๊ฐ”๊ณ , ๋‚˜์ค‘์—๋Š” ์ˆ˜์ •์ด ๋ถˆ๊ฐ€๋Šฅํ• ์ •๋„๋กœ ์ฝ”๋“œ์˜ ์ƒ์‚ฐ์„ฑ์ด 0์— ๊ฐ€๊นŒ์›Œ์กŒ๋‹ค๊ณ  ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ์‹œ๊ฐ„์— ๊ธ‰๊ธ‰ํ•ด ๋Œ€์ถฉ ๊ตฌํ˜„์—๋งŒ ๋ชฉ์ ์„ ๋‘๊ณ , ์ถ”ํ›„ ๊น”๋”ํ•˜๊ฒŒ ์ˆ˜์ •ํ•ด์•ผํ•˜์ง€ ํ•˜๋Š” ํ”Œ๋žœ์ด ์‰ฝ๊ฒŒ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ์ด๊ฑธ leblanc's Law - "๋‚˜์ค‘์€ ๊ฒฐ์ฝ” ์˜ค์ง€์•Š๋Š”๋‹ค" ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ €์ž๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ• ๋•Œ ์• ์ดˆ๋ถ€ํ„ฐ ํด๋ฆฐํ•˜๊ฒŒ ์ž‘์„ฑํ•ด์•ผํ•จ์„ ๊ฐ•์กฐํ•˜๊ณ  ์žˆ๋‹ค. ํด๋ฆฐ ์ฝ”๋“œ๋ž€ ๋ฌด์—‡์ธ๊ฐ€ 1. ๊ฐ€๋…์„ฑ์ด ์ข‹์•„์•ผํ•œ๋‹ค. (๋‹ค๋ฅธ ์ด๊ฐ€ ์ฝ๊ธฐ์— ์‰ฝ๊ณ  ๋˜ํ•œ ์ˆ˜์ •๋„ ์‰ฌ์›Œ์•ผํ•œ๋‹ค.) 2. ๋ฉ”๋ชจ๋ฆฌ๋‚ญ๋น„๊ฐ€ ์—†์–ด์•ผํ•œ๋‹ค. 3. ์˜์กด์„ฑ ์ตœ์†Œํ™”, API๋Š” ๋ช…ํ™•ํ•˜๊ฒŒ ์ •์˜ํ•ด์•ผํ•œ..

computer science 2023. 4. 3. 00:07
UserDefaults๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Login Cache ์ €์žฅํ•˜๊ธฐ

UserDefaults๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ๊ทธ์ธ cache ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. UserDefaults๋Š” Local Database๋กœLogin credentials, tokens ๋“ฑ๊ณผ ๊ฐ™์€ ์†Œ๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. Local DB๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ๋Š” CoreData๋„ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.CoreData์™€ Userdefaults์˜ ์ฐจ์ด์ ์œผ๋กœ๋Š”CoreData๋Š” ์—ฌ๋Ÿฌ ์†์„ฑ๊ณผ ๊ฐœ์ฒด๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง„ ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์„ ์ €์žฅํ•˜๋„๋ก ์„ค๊ณ„๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค. CoreData์™€ ์ฐจ์ด์ Userdefaults๋Š” ๊ฐ„๋‹จํ•œ string๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๋ฐ˜๋ฉด, CoreData์—๋Š” array, dictionary๋ฅผ ์ €์žฅ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.Userdefaults๋Š” thread - safe์ด๋ฉฐ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ์— ๋ณ„๋‹ค๋ฅธ ๋ฌธ์ œ ์—†์ด ์ ‘๊ทผํ•ด๋„ ..

iOS & swift 2023. 2. 26. 17:14
์ด๋ฏธ์ง€ ํŠน์ • ๋ถ€๋ถ„๋งŒ ๋Š˜๋ฆฌ๊ธฐ (Image Slicing, Image Stretch)

์ด๋Ÿฐ ์ด๋ฏธ์ง€์˜ ํฐ์ƒ‰ ๋ฐฐ๊ฒฝ์˜ ๋งํ’์„ ์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์—ฌ๊ธฐ์„œ ์ด๋ฏธ์ง€์˜ width๋งŒ ๋Š˜์–ด๋‚˜๊ฒŒ ๋  ๊ฒฝ์šฐ cornerRadius์˜ ๊ฐ’์ด ์œ ์ง€๋˜์ง€ ๋ชปํ•˜๊ณ  ๊นจ์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ Image Slicing์˜ Stretch ๊ธฐ๋Šฅ์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ๋Š” 9-Patch๋ผ๊ณ  ํ•˜๋”๋ผ๊ตฌ์š” ์šฐ์„  Asset์—์„œ ํŠน์ • ๋ถ€๋ถ„๋งŒ ๋Š˜๋ฆฌ๊ณ ์ž ํ•˜๋Š” ์ด๋ฏธ์ง€๋ฅผ ์„ ํƒํ•ด์ค€ ๋’ค, Show Overview ๋Œ€์‹ ์— Editor์˜ Show Slicing๋ฅผ ์ฒดํฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ด๋ ‡๊ฒŒ ๊ฐ€๋กœ ์„ธ๋กœ ์˜์—ญ์„ ์žก์„ ์ˆ˜ ์žˆ๋Š”๋ฐ, ๊ฐ€๋กœ๋งŒ ๋Š˜์ด๊ณ  ์‹ถ๋‹ค๋ฉด ๊ฐ€๋กœ๋งŒ, ๊ฐ€๋กœ์„ธ๋กœ ๋‘˜๋‹ค ์žก์•„์„œ ๋Š˜์ด๊ณ  ์‹ถ๋‹ค๋ฉด ๋‘˜๋‹ค ์„ ํƒํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋Š˜์–ด๋‚˜๊ฒŒ ํ•˜๊ณ  ์‹ถ์€ ์˜์—ญ์„ ์œ„ ์ด๋ฏธ์ง€ ์ฒ˜๋Ÿผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ์ด๋ฏธ์ง€ contentMode์—์„œ ๋Š˜์–ด๋‚˜๊ฒŒ๋  ์˜์—ญ์ด..

iOS & swift 2023. 2. 10. 00:32
HTTP ์™„๋ฒฝ ๊ฐ€์ด๋“œ 7์žฅ - ์›น ์บ์‹œ

HTTP ์™„๋ฒฝ๊ฐ€์ด๋“œ 7์žฅ Cache๋ฅผ ์ฝ๊ณ  ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ์šฐ์„  Web Caching ์ด๋ž€? HTTP ํ†ต์‹  ์‹œ response์˜ body ์— ํ•ด๋‹นํ•˜๋Š” content document๋ฅผ ๋กœ์ปฌ์— ์ €์žฅํ•˜์—ฌ ํ•ด๋‹น document์˜ ์š”์ฒญ์ด ์žˆ์„๋•Œ ์„œ๋ฒ„์—์„œ response๋กœ ๋ฐ›๋Š” ๋Œ€์‹  ๋กœ์ปฌ์—์„œ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์šฐ์„  web cache์— ๋Œ€ํ•ด ์ตํž ๊ด€์  3๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ์บ์‹ฑ์ด ์–ด๋–ป๊ฒŒ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ ์‹œํ‚ค๋Š”์ง€ ์–ด๋–ป๊ฒŒ ์ตœ์‹  ์ƒํƒœ์˜ ์บ์‹œ๋ฅผ ์œ ์ง€ํ•˜๋Š”์ง€ ์บ์‹ฑ๊ณผ ์„œ๋ฒ„๊ฐ„์˜ ์šด์šฉ ๋ฐฉ๋ฒ• ์ด ๊ด€์ ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ๊ธ€์„ ์ฝ์–ด์ฃผ์‹œ๋ฉด ๋„์›€์ด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์บ์‹ฑ ํ–ˆ์„๋•Œ์˜ ์žฅ์  3๊ฐ€์ง€ ์ž…๋‹ˆ๋‹ค. ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋˜ ๋ณด๋‚ด์ง€ ์•Š์•„๋„ ๋จ ๋„คํŠธ์›Œํฌ ๋ณ‘๋ชฉํ˜„์ƒ ๊ฐ์†Œ ๋น ๋ฅธ ๋กœ๋“œ ์ด ์„ธ๊ฐ€์ง€๊ฐ€ ๋‹ค ๊ฐ™์€ ๋งฅ๋ฝ์ด๊ธฐ๋„ ํ•œ๋ฐ. ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต ํšŸ์ˆ˜๋ฅผ ์ค„์ด๋ฉด์„œ ๋‚˜ํƒ€๋‚˜๋Š”..

computer science 2023. 1. 12. 02:05
TableView ๋‚ด๋ถ€์— CollectionView ๋„ฃ๊ธฐ (xib)

์†Œ์…œ์ปค๋จธ์Šค์—์„œ ์ž์ฃผ ๋ณด์ด๋Š” ๋””์ž์ธ์ธ TableView ๋‚ด๋ถ€์— ๊ฐ€๋กœ ์Šคํฌ๋กค์˜ CollectionView Layout์„ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•œ๋งˆ๋””๋กœ ์š”์•ฝํ•˜์ž๋ฉด tableViewCell์— horizotal collectionView๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. collectionView์—๋Š” ๋‹น์—ฐํžˆ collectionViewCell์„ ๋„ฃ๊ตฌ์š”.. ๋จผ์ € UI ๋ถ€ํ„ฐ ๋ณด๋ฉด ์šฐ์„  tableView์— 2๊ฐœ์˜ ์ฝœ๋ ‰์…˜ ๋ทฐ๋ฅผ ๋„ฃ์–ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜๋Š” 1xN ๊ฐ€๋กœ ์ฝœ๋ ‰์…˜๋ทฐ์ด๊ณ  ํ•˜๋‚˜๋Š” 2xN ์„ธ๋กœ ์ฝœ๋ ‰์…˜๋ทฐ๋ฅผ ๋„ฃ์–ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ์šฐ์„  ์ €๋Š” xib๋กœ ๊ฐ๊ฐ์˜ ์ฝœ๋ ‰์…˜๋ทฐ ์„ ์–ธํ•ด์ฃผ์—ˆ๊ณ , ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”๋ทฐ์— 2๊ฐœ์˜ ์ฝœ๋ ‰์…˜๋ทฐ์…€ Nib์™€ ์…€ID๋ฅผ ๋“ฑ๋กํ•˜์—ฌ ์—ฐ๊ฒฐํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. cell์„ register์„ ํ•ด์ฃผ๊ณ , cellForRow๋กœ cell์„ row์— ๋”ฐ๋ผ cel..

iOS & swift 2022. 4. 10. 18:59