Be Developer

[ํด๋ฆฐ ์ฝ”๋“œ] 10์žฅ. ํด๋ž˜์Šค ๋ณธ๋ฌธ

TIL

[ํด๋ฆฐ ์ฝ”๋“œ] 10์žฅ. ํด๋ž˜์Šค

yujin_dev 2022. 3. 9. 17:50
๋ฐ˜์‘ํ˜•

2022. 03. 09

 

 

๐Ÿ“š ์˜ค๋Š˜ ์ฝ์€ ๋ฒ”์œ„

10์žฅ. ํด๋ž˜์Šค

 

 

๐Ÿ“– ์ฑ…์—์„œ ๊ธฐ์–ตํ•˜๊ณ  ์‹ถ์€ ๋‚ด์šฉ

- ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•˜๋Š” ํ‘œ์ค€ ์ž๋ฐ” ๊ด€๋ก€ : ๋ณ€์ˆ˜ ๋ชฉ๋ก (static public ์ƒ์ˆ˜ -> static private ๋ณ€์ˆ˜ -> private instance ๋ณ€์ˆ˜) -> ๊ณต๊ฐœ ํ•จ์ˆ˜ -> ๋น„๊ณต๊ฐœ ํ•จ์ˆ˜ (์ž์‹ ์„ ํ˜ธ์ถœํ•˜๋Š” ๊ณต๊ฐœ ํ•จ์ˆ˜ ์งํ›„) (p.172)

- ์บก์Šํ™”๋ฅผ ํ’€์–ด์ฃผ๋Š” ๊ฒฐ์ •์€ ์–ธ์ œ๋‚˜ ์ตœํ›„์˜ ์ˆ˜๋‹จ์ด๋‹ค. (p.172)

- ํด๋ž˜์Šค๋Š” ์ž‘์•„์•ผ ํ•œ๋‹ค. (p.172)

- ํด๋ž˜์Šค์˜ ํฌ๊ธฐ ์ธก์ • ์ฒ™๋„๋Š” ํด๋ž˜์Šค๊ฐ€ ๋งก์€ ์ฑ…์ž„์ด๋‹ค. (p.173)

- ์‹ค์ œ๋กœ ์ž‘๋ช…์€ ํด๋ž˜์Šค ํฌ๊ธฐ๋ฅผ ์ค„์ด๋Š” ์ฒซ ๋ฒˆ์งธ ๊ด€๋ฌธ์ด๋‹ค. ๊ฐ„๊ฒฐํ•œ ์ด๋ฆ„์ด ๋– ์˜ค๋ฅด์ง€ ์•Š๋Š”๋‹ค๋ฉด ํ•„๊ฒฝ ํด๋ž˜์Šค ํฌ๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ์ปค์„œ ๊ทธ๋ ‡๋‹ค. ํด๋ž˜์Šค ์ด๋ฆ„์ด ๋ชจํ˜ธํ•˜๋‹ค๋ฉด ํ•„๊ฒฝ ํด๋ž˜์Šค ์ฑ…์ž„์ด ๋„ˆ๋ฌด ๋งŽ์•„์„œ๋‹ค. (p.175)

- ํด๋ž˜์Šค ์„ค๋ช…์€ ๋งŒ์ผ("if"), ๊ทธ๋ฆฌ๊ณ ("and"), -(ํ•˜)๋ฉฐ("or"), ํ•˜์ง€๋งŒ("but")์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ ์„œ 25๋‹จ์–ด ๋‚ด์™ธ๋กœ ๊ฐ€๋Šฅํ•ด์•ผ ํ•œ๋‹ค. (p.175)

- ๋‹จ์ผ ์ฑ…์ž„ ์›์น™ Single Responsibility Principle, SRP ์€ ํด๋ž˜์Šค๋‚˜ ๋ชจ๋“ˆ์„ ๋ณ€๊ฒฝํ•  ์ด์œ ๊ฐ€ ํ•˜๋‚˜๋ฟ์ด์–ด์•ผ ํ•œ๋‹ค. (p. 175)

- ํฐ ํด๋ž˜์Šค ๋ช‡ ๊ฐœ๊ฐ€ ์•„๋‹ˆ๋ผ ์ž‘์€ ํด๋ž˜์Šค ์—ฌ๋Ÿฟ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ์‹œ์Šคํ…œ์ด ๋” ๋ฐ”๋žŒ์งํ•˜๋‹ค. ์ž‘์€ ํด๋ž˜์Šค๋Š” ๊ฐ์ž ๋งก์€ ์ฑ…์ž„์ด ํ•˜๋‚˜๋ฉฐ, ๋ณ€๊ฒฝํ•  ์ด์œ ๊ฐ€ ํ•˜๋‚˜๋ฉฐ, ๋‹ค๋ฅธ ์ž‘์€ ํด๋ž˜์Šค์™€ ํ˜‘๋ ฅํ•ด ์‹œ์Šคํ…œ์— ํ•„์š”ํ•œ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. (p.177)

- ์‘์ง‘๋„๊ฐ€ ๋†’์•„์งˆ์ˆ˜๋ก ๋ณ€์ˆ˜์™€ ๋ฉ”์„œ๋“œ๋ฅผ ์ ์ ˆํžˆ ๋ถ„๋ฆฌํ•ด ์ƒˆ๋กœ์šด ํด๋ž˜์Šค ๋‘์„ธ ๊ฐœ๋กœ ์ชผ๊ฐœ์ค€๋‹ค. (p.178)

- ๊นจ๋—ํ•œ ์‹œ์Šคํ…œ์€ ํด๋ž˜์Šค๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ์ •๋ฆฌํ•ด ๋ณ€๊ฒฝ์— ์ˆ˜๋ฐ˜ํ•˜๋Š” ์œ„ํ—˜์„ ๋‚ฎ์ถ˜๋‹ค. (p.185)

- OCP Open-Closed Principle : ํด๋ž˜์Šค๋Š” ํ™•์žฅ์— ๊ฐœ๋ฐฉ์ ์ด๊ณ  ์ˆ˜์ •์— ํ์‡„์ ์ด์–ด์•ผ ํ•œ๋‹ค. (p.188)

- ์ƒˆ ๊ธฐ๋Šฅ์„ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ๊ธฐ์กด ๊ธฐ๋Šฅ์„ ๋ณ€๊ฒฝํ•  ๋•Œ ๊ฑด๋“œ๋ฆด ์ฝ”๋“œ๊ฐ€ ์ตœ์†Œ์ธ ์‹œ์Šคํ…œ ๊ตฌ์กฐ๊ฐ€ ๋ฐ”๋žŒ์งํ•˜๋‹ค. ์ด์ƒ์ ์ธ ์‹œ์Šคํ…œ์ด๋ผ๋ฉด ์ƒˆ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ๋•Œ ์‹œ์Šคํ…œ์„ ํ™•์žฅํ•  ๋ฟ ๊ธฐ์กด ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค. (p.188)

- ์‹œ์Šคํ…œ์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๋ฉด ์žฌ์‚ฌ์šฉ์„ฑ๋„ ๋”์šฑ ๋†’์•„์ง„๋‹ค. ๊ฒฐํ•ฉ๋„๊ฐ€ ๋‚ฎ๋‹ค๋Š” ์†Œ๋ฆฌ๋Š” ๊ฐ ์‹œ์Šคํ…œ ์š”์†Œ๊ฐ€ ๋‹ค๋ฅธ ์š”์†Œ๋กœ๋ถ€ํ„ฐ ๊ทธ๋ฆฌ๊ณ  ๋ณ€๊ฒฝ์œผ๋กœ๋ถ€ํ„ฐ ์ž˜ ๊ฒฉ๋ฆฌ๋˜์–ด ์žˆ๋‹ค๋Š” ์˜๋ฏธ๋‹ค. ์‹œ์Šคํ…œ ์š”์†Œ๊ฐ€ ์„œ๋กœ ์ž˜ ๊ฒฉ๋ฆฌ๋˜์–ด ์žˆ์œผ๋ฉด ๊ฐ ์š”์†Œ๋ฅผ ์ดํ•ดํ•˜๊ธฐ๋„ ๋” ์‰ฌ์›Œ์ง„๋‹ค. (p.190)

- DIP Dependency Inversion Principle : ํด๋ž˜์Šค๋Š” ์ƒ์„ธํ•œ ๊ตฌํ˜„์ด ์•„๋‹ˆ๋ผ ์ถ”์ƒํ™”์— ์˜์กดํ•ด์•ผ ํ•œ๋‹ค. (p.190)

 

 

๐Ÿ™Œ ์˜ค๋Š˜ ์ฝ์€ ์†Œ๊ฐ

- ํด๋ž˜์Šค์— ๋Œ€ํ•ด ๋‹จ๋‹จํžˆ ์ฐฉ๊ฐ์„ ํ•˜๊ณ  ์žˆ์—ˆ๋‹ค. ๋‚˜๋Š” ์—ฌํƒœ ๋ญ”๊ฐ€ ํด๋ž˜์Šค๋ผ๋ฉด ๋ฉ์–ด๋ฆฌ๋กœ ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ์ฑ…์„ ์ฝ์ง€ ์•Š์•˜๋‹ค๋ฉด ๊ณ„์† ๊ทธ๋ ‡๊ฒŒ ์ƒ๊ฐํ•˜์ง€ ์•Š์•˜์„๊นŒ? ์˜ˆ์ œ์—์„œ ๋ณด์—ฌ์ฃผ๋Š” ํ•œ ์ค„์งœ๋ฆฌ ํด๋ž˜์Šค์— ์ ์ž–์ด ์ถฉ๊ฒฉ์„ ๋ฐ›์•˜๋‹ค. ์ฑ…์ž„์„ ์ตœ๋Œ€ํ•œ ๋‚˜๋ˆ„์–ด ๋” ์ž‘์€ ํด๋ž˜์Šค๋ฅผ ์œ ์ง€ํ•˜๋„๋ก ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ์œ ๋…ํ•ด์•ผ๊ฒ ๋‹ค.

- OOP์— ๋Œ€ํ•ด ์ข€ ๋” ์ž์„ธํžˆ ๊ณต๋ถ€ํ•ด์•ผ ํ•  ํ•„์š”์„ฑ์„ ๋Š๊ผˆ๋‹ค. ๊ฒ‰ํ•ฅ๊ธฐ๋กœ ์•Œ๊ณ  ์žˆ๋‹ค๋Š” ๋Š๋‚Œ์ด ๋“ค์—ˆ๊ณ , ์ถ”์ƒ ํด๋ž˜์Šค๋‚˜ ์ธํ„ฐํŽ˜์ด์Šค์— ๋Œ€ํ•ด์„œ๋„ ๋‹ค์‹œ ๊ณต๋ถ€ํ•ด์•ผ๊ฒ ๋‹ค.

๋ฐ˜์‘ํ˜•
Comments