Swift-style-guide: ์ž๊ธฐ ์‚ฌ์šฉ

์— ๋งŒ๋“  2017๋…„ 11์›” 20์ผ  ยท  5์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: raywenderlich/swift-style-guide

์•ˆ๋…•ํ•˜์„ธ์š”,

์šฐ์„ , ๋”ฐ๋ผํ•  ์ˆ˜ ์žˆ๋Š” ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ฉด์—์„œ ํ›Œ๋ฅญํ•˜๊ณ  ๋งค์šฐ ์œ ์šฉํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹ญ์‹œ์˜ค.

๊ทธ๋Ÿฌ๋‚˜ ํ•„์ž๋Š” ๋ช…์‹œ์ ์œผ๋กœ self ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ง€์—ญ ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ• ์ง€ ์•„๋‹ˆ๋ฉด ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ• ์ง€์— ๋Œ€ํ•ด ๋…ผ์ ์„ ๊ฐ–๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ์š”์ ์€ ์šฐ๋ฆฌ๊ฐ€ ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ƒ‰์ƒ ๊ฐ•์กฐ ํ‘œ์‹œ๋ฅผ ๋ณด๋ฉด ๋ฌด์–ธ๊ฐ€๊ฐ€ ํด๋ž˜์Šค ๋‚ด์— (๋กœ์ปฌ๋กœ) ์žˆ๋Š”์ง€ ์—ฌ๋ถ€ (์ „์—ญ์ ์œผ๋กœ, ์‹ฑ๊ธ€ ํ†ค ๋“ฑ)๊ฐ€ ๋” ๋ช…ํ™• ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

Swift ์ง€์›์€ ์•”์‹œ์ ์œผ๋กœ self ์ฐธ์กฐํ•˜์ง€๋งŒ, ๊ทธ๋ ‡๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋ผ๋Š” ์˜๋ฏธ๋Š” ์•„๋‹ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋‚ด ์˜๊ฒฌ: ๋กœ์ปฌ ๋˜๋Š” ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜์ธ์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด self๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋ฉ”์„œ๋“œ ๋˜๋Š” ํด๋ž˜์Šค๊ฐ€ ๋„ˆ๋ฌด ํฝ๋‹ˆ๋‹ค.

๋ชจ๋“  5 ๋Œ“๊ธ€

๋‚ด ์˜๊ฒฌ: ๋กœ์ปฌ ๋˜๋Š” ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜์ธ์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด self๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋ฉ”์„œ๋“œ ๋˜๋Š” ํด๋ž˜์Šค๊ฐ€ ๋„ˆ๋ฌด ํฝ๋‹ˆ๋‹ค.

๋‚˜์—๊ฒŒ ํด๋กœ์ €์— ๋ช…์‹œ์ ์ธ ์ž์ฒด ์บก์ฒ˜๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์ธ์‹ํ•˜๋Š” ๊ฒƒ์€ ๋ชจ๋“  ๊ณณ์—์„œ self๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์Šคํƒ€์ผ๋กœ ์ˆจ๊ธฐ๊ธฐ์—๋Š” ๋„ˆ๋ฌด ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฆ‰, ์ด ๋ฐฐ๋Š” ์ด๋ฏธ RW ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ๋ฅผ ์œ„ํ•ด ํ•ญํ•ดํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์„ ๋’ค์ง‘๊ธฐ ์œ„ํ•ด์„œ๋Š” ํฐ ๋ณ€ํ™”๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

@hollance @rayfix
๋‹ต์žฅ์„ ๋ณด๋‚ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

๋‚ด ์ƒ๊ฐ์— ์‚ฌ๋žŒ๋“ค์ด ๋น„๊ต์  ํฐ ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ๊ฐ€์ง„ ํŒ€์— ํ•ฉ๋ฅ˜ํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ์ฝ”๋“œ๋ฅผ ๊ฒ€ํ† ํ•  ๋•Œ self ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ํŠนํžˆ ํŒ€์˜ ์‚ฌ๋žŒ๋“ค์ด ๋‹ค์–‘ํ•œ ์ˆ˜์ค€์˜ ์ฝ”๋”ฉ์„ ๊ฐ€์ง€๊ณ  ์žˆ์„ ๋•Œ ์ž‘์—…์„ ํ›จ์”ฌ ๋” ์‰ฝ๊ฒŒ ๋”ฐ๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์ˆ .

์ €๋Š” ๊ฐœ์ธ์ ์œผ๋กœ ํด๋กœ์ €์—์„œ ๋ช…์‹œ์ ์ธ ์ž์ฒด ์บก์ฒ˜๋ฅผ ๊ฐ–๋Š” ๊ฒƒ์˜ ๊ฐ€์น˜๋ฅผ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค(๋˜๋Š” ๋ณธ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค). ๋ฐ˜๋Œ€๋กœ ํด๋กœ์ €์—์„œ ๋ช…์‹œ์ ์œผ๋กœ self ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋”ฉ ์Šคํƒ€์ผ์ด ์•ฝ๊ฐ„ ์ผ๊ด€์„ฑ์ด ์—†์Šต๋‹ˆ๋‹ค.

SE-0009 Require self for accessing instance members ๋ฅผ ๊ฑฐ๋ถ€ํ•œ Apple์˜ ๋…ผ๋ฆฌ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

_* ํ•„์ˆ˜ "์ž๊ธฐ". ์ถ”๊ฐ€ ๋ช…ํ™•์„ฑ์œผ๋กœ ์ •๋‹นํ™”๋˜์ง€ ์•Š๋Š” ์ƒ๋‹นํ•œ ์–‘์˜ ์žฅํ™ฉํ•จ์„ ๋„์ž…ํ•ฉ๋‹ˆ๋‹ค. ํ•„์ˆ˜ "์ž๊ธฐ"์ธ ๊ฒƒ์€ ์‚ฌ์‹ค์ด์ง€๋งŒ. ๋ฒ„๊ทธ ํด๋ž˜์Šค๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ด๋Ÿฌํ•œ ๋ฒ„๊ทธ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๋น„์šฉ์€ ์‹œ๊ฐ์ ์œผ๋กœ ๋ณต์žกํ•˜๋‹ค๋Š” ๋ฉด์—์„œ ์ƒ๋‹นํžˆ ๋†’์œผ๋ฉฐ, ์ด๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๊น”๋”ํ•œ Swift์˜ ๋Š๋‚Œ์— ๋ฐ˜ํ•ฉ๋‹ˆ๋‹ค. Paul Cantrell์€ ์ž์‹ ์˜ ๋ฆฌ๋ทฐ https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20151214/002910.html ์—์„œ " ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ๋ฐ˜๋ณต๋˜๋Š” ๋ชจ๋“  ๊ฒƒ์€ ๋ณด์ด์ง€ ์•Š๊ฒŒ ๋ฉ๋‹ˆ๋‹ค."๋ผ๊ณ  ๋งํ–ˆ์Šต๋‹ˆ๋‹ค. Swift๋Š” ๋””์ž์ธ์—์„œ ์ด๋Ÿฌํ•œ ์ƒ์šฉ๊ตฌ ๋ฐ ๋ฐ˜๋ณต์„ ํ”ผํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•˜๋ฉฐ, ์ด๋Š” Swift API ๋””์ž์ธ ๊ฐ€์ด๋“œ๋ผ์ธ https://swift.org/documentation/api-design-guidelines.html ์—์„œ๋„ ์ง€์ง€ํ•˜๋Š” ์›์น™์ž…๋‹ˆ๋‹ค._

@hollance ๋„ ์•”์‹œํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋” ์ž‘์€ ๋ฉ”์„œ๋“œ์™€ ํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ๋ช…ํ™•์„ฑ์„ ๊ฐœ์„ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ํด๋กœ์ €์—์„œ self ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ self์— ๋Œ€ํ•œ ์•ฝํ•œ/๊ฐ•ํ•œ ์ฐธ์กฐ ๋•Œ๋ฌธ์— ๋‚˜์—๊ฒŒ ๋” ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” @RobertGummesson ,

์ฐธ์กฐ๋ฅผ ์ถ”๊ฐ€ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. self. ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ์‚ฌ์šฉํ• ์ง€ ์—ฌ๋ถ€์— ๋Œ€ํ•œ ๋ณด๋‹ค ์ค‘๋ฆฝ์ ์ธ ๊ด€์ ์„ ํ‘œํ˜„ํ•˜๊ณ  ์žฅ๋‹จ์ ์„ ์„ค๋ช…ํ•˜๋Š” ์–ธ๊ธ‰๋œ ๋‚ด์šฉ์— ์ „์ ์œผ๋กœ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜์—๊ฒŒ " self ์‚ฌ์šฉ์„ ํ”ผํ•˜๋ผ"๋Š” ํ‘œํ˜„์€ ๋„ˆ๋ฌด ๊ฐ•ํ•˜๋‹ค. RayWenderlich๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ํฐ ์˜ํ–ฅ๋ ฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ์—์„œ ์žฅ๋‹จ์ ์„ ์„ค๋ช…ํ•˜๊ณ  ๊ฐœ๋ฐœ์ž๊ฐ€ ์Šค์Šค๋กœ ๊ฒฐ์ •ํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ๋” ์ ์ ˆํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰