์ด๋ฆ์ ์ด๋์๋ ์ฐ์ธ๋ค. ๋ง์ด ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์์ง์ผ๋ฉด ํธํ๋ค. ๋ช ๊ฐ์ง์ ๊ท์น์ ์์๋ณด์.
์๋๋ฅผ ๋ถ๋ช ํ ๋ฐํ๋ผ
๋งํ๊ธฐ๋ ์ฝ์ง.. ์ด๋ ต๊ฑฐ๋ ?
์ ์๋ ์๋ค. ํ์ง๋ง ์ด ์๋๊ฐ ๋ถ๋ช ํ ์ด๋ฆ์ ์ง๋ ๊ฒ์ ์ ๋ง๋ก ์ค์ํ๋ค. ๊ฒฐ๊ตญ ์ต์ข ์ ์ผ๋ก ์ ์ฝํ๋ ์๊ฐ์ด ๋ ๋ง๊ธฐ ๋๋ฌธ์ด๋ค. ๋ ํฌํจํด ๋ฏธ๋์ ํ๋ณตํด์ง๋ค. ์ฃผ์์ด ํ์ํ๋ฉด ์๋๋ฅผ ๋ถ๋ช ํ ๋๋ฌ๋ด์ง ๋ชปํ๋ค๋ ๊ฒ์ด๋ค.
๋ ์์์์ ํต์ฌ์, ๋์ ์ฝ๋์ ๊ฒฝ์ฐ ๋ ์์๊ฒ โ๊ฐ์ โ์ ๋ฐ๋ผ๊ณ ์๋ค๋ ์ ์ ์๋ค. ์ข์ ์ฝ๋์ ๊ฒฝ์ฐ ์ด๋ฆํ๋๋ฅผ ๋ณ๊ฒฝํ๊ฒ ๋จ์ผ๋ก์จ ์ด๋ค ์๋์ธ์ง ๋ช ํํ๊ฒ ๋๋ฌ๋๋ค.
๊ทธ๋ฆ๋ ์ ๋ณด๋ฅผ ํผํ๋ผ
accountList
: List? ์๋ฃ๊ตฌ์กฐ๊ฐ List์ธ๊ฑด๊ฐ?- ์ปจํ ์ด๋ ์ ํ์ ์ด๋ฆ์ ์ฌ์ฉํ๋ ๊ฒ์ ์ง์ํ์.
accountGroup
,bunchOfAccounts
,accounts
๋ก ๋ณ๊ฒฝ
XYZControllerOfStrings
,XYZControllerOfContainerStrings
: ๋ญ ์จ์ผํ ์ง ํท๊ฐ๋ฆฌ๋ค..- ์๋ก ํก์ฌํ ์ด๋ฆ์ ์ฌ์ฉํ์ง ์๋๋ก ์ ์ํ์.
- ์ผ๊ด์ฑ์ด ๋จ์ด์ง๋ ๊ฒ์ ๊ทธ๋ฆ๋ ์ ๋ณด๋ค.
์๋ฏธ์๊ฒ ๊ตฌ๋ถํ๋ผ
- ์ ๊ฐ์๊ฐ ์ฌ๋ฌ๊ฐ๋ค
[a1, a2, โฆ]
์จ์ผ์ง- ๋ง๋ ์๋๊ณ ์๋๊ฐ ํ์ ๋์ง ์๋ ๋ณ์๋ ์ฐ์ง๋ง.
book
์ด๋ผ๋ ๋ณ์๊ฐ ์๋๋ฐ ์ด ์ด๋ฆ์ ์ฐ๊ณ ์ถ์ด.theBook
์ด๋ ๊ฒ ํ๋ฉด ๋๊ฒ ์ง?- ์ค๋ณต์ ์ ๊ฑฐํ๊ธฐ ์ํ ๋ชฉ์ ์ผ๋ก ๋ถ์ฉ์ด๋ฅผ ์ถ๊ฐํ์ง๋ ๋ง์. ๋ฌด์๋ฏธํ๋ค.
- ๋ถ์ฉ์ด๊ฐ ์๋ฏธ์์ ๋ (ie. ์ง์ญ๋ณ์)์์๋ ์ฌ์ฉํด๋ ๋ฌด๋ฐฉํ๋ค. ์ ์๋ฏธํ๊ฒ ์ฌ์ฉํ๋ผ๋ ๋ง์ด๋ค.
- a์ฒ๋ผ ๋ถ์ด๊ฒ ๋๋ฉด ๊ฒ์ํ ๋๋ ํ๋ค๋ค.
Name
VSNameString
- ์ ๊ตณ์ด String์ ์ ์ด์ฃผ๋๊ฐ? Double ํ์ ์ด ๋ ๊ฐ๋ฅ์ฑ์ด ์์ด์ ๊ทธ๋ฐ๊ฑฐ์ผ?
getActiveAccount()
VSgetActiveAccounts()
VSgetActiveAccountInfo()
- ๋ญ ์จ์ผํ ์ง ์ฌ์ฉํ๋ ์ฌ๋์ด ์ด๋ป๊ฒ ์์?
money
VSmoneyAmount
,message
VStheMessage
- ๋ง์ฐฌ๊ฐ์ง๋ค. ๋ญ ์จ์ผํ ์ง ์ด๋ป๊ฒ ์์?
๋ฐ์ํ๊ธฐ ์ฌ์ด ์ด๋ฆ์ ์ฌ์ฉํ๋ผ
ํ๋ก๊ทธ๋๋ฐ์ ์ฌํ์ ํ๋์ด๋ค. ๋ฐ์ํ๊ธฐ ์ฌ์ด ๋จ์ด๋ ์ํต์ ์ ์ฉํ๋ค.
์๋ฌด๋๋ ๋ง์ ์๋ฏธ๋ฅผ ๋ด์ ๋จ์ด๋ฅผ ์ฌ์ฉํ ์๋ก ์ข๋ค. ์์ ๊ฒฝ์ฐ ๋ญ๋ผ๊ณ ํ๋์ง ์ ์๊ฐ ์๋ค. ์ง์ ์ธ ๋ํ๊ฐ ๊ฐ๋ฅํ๊ฐ?
๊ฒ์ํ๊ธฐ ์ฌ์ด ์ด๋ฆ์ ์ฌ์ฉํ๋ผ
๋จ์ผ ๋ฌธ์, ์ซ์๋ฅผ ๋ณ์๋ช ์ผ๋ก ํ์ง ๋ง๋ผ.
์ผ๋จ ์ฐพ๊ธฐ ํ๋ค๋ค. ์ค๋ณต ์ฒ๋ฆฌ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์์ ๊ฒ์์ด ์๋๋ค. (์ซ์: ์์? ๋ณ์?) ์คํ๋ ค ๊ธด ์ด๋ฆ์ด ํจ์ฌ ์ข๋ค.
์ธ์ฝ๋ฉ์ ํผํ์
๋ณ์์ ๋ถ๊ฐ ์ ๋ณด๋ฅผ ๋ํ์ง ๋ง๋ผ.
- ํ๊ฐ๋ฆฌ์ ํ๊ธฐ๋ฒ
- ๋ณ์๋ช ์ ํด๋น ๋ณ์์ Type์ ์ ์ง๋ง๋ผ
- ์์ฆ์ compiler๊ฐ ๋ณ์ ํ์ ๊น์ง ๋ค ์ ๊ฒํ๊ธฐ ๋๋ฌธ์ ์ด์ ํ์์๋ค.
- ๋ฉค๋ฒ ๋ณ์ ์ ๋์ด
m_property
,m_method
์ ๊ฐ์ ์์ผ๋ก ํ ํ์๊ฐ ์๋ค.- IDE๊ฐ ์๊น์ ๋ค๋ฅด๊ฒ ํด์ค๋ค.
- ์ฝ๋ ์ฝ๋ ์ฌ๋๋ ์ฝ๋ค๋ณด๋ฉด
m_
์ ์ง์๋ฒ๋ฆฌ๊ณ ์ฝ์ด๋ฒ๋ฆฐ๋ค. - ์.. ๊ตฌ๋ฅ๋ค๋ฆฌ๋ค ๋ผ๋ ๋๋์ด ๊ฐํ๊ฒ ๋๋ค.
- ์ธํฐํ์ด์ค์ ๊ตฌํ
- ์ธํฐํ์ด์ค ํด๋์ค์ ๊ตฌํ ํด๋์ค๋ฅผ ๋๋ ์ผ ํ๋ค๋ฉด ๊ตฌํ ํด๋์ค์ ์ด๋ฆ์ ์ ๋ณด๋ฅผ ์ธ์ฝ๋ฉํ์.
Do / Donโt | Interface class | Concrete(Implementation) class |
---|---|---|
Donโt | IShapeFactory | ShapeFactory |
Do | ShapeFactory | ShapeFactoryImp |
Do | ShapeFactory | CShapeFactory |
์์ ์ ๊ธฐ์ต๋ ฅ์ ์๋ํ์ง ๋ง๋ผ
์ ๋ด ์ง์ ๋ฅ๋ ฅ์ ๊ณผ์ํด์ผ ๊ฒ ์ด. ์๋ฌด๋ ๋ชจ๋ฅด๊ฒ ๋ณํ๊ฐ์ ๋ณ์๋ฅผ ์จ์ผ์ง.
c
๋ ์๊ฐ ๋จธ๋ฆฌ์์ผ๋ก ํ๋ฒ ๋ ์๊ฐํด ๋ณํํด์ผ ํ ๋งํ ๋ณ์๋ช ์ ์ฐ์ง ๋ง์. ์ ๋ฌธ๊ฐ๋ ๋ช ๋ฃํจ์ ๊ธฐ๋ฐ์ผ๋ก ๋จ๋ค์ด ์ดํดํ๋ ์ฝ๋๋ฅผ ๋ด๋๋๋ค.
ํด๋์ค ์ด๋ฆ
๋ช ์ฌ ํน์ ๋ช ์ฌ๊ตฌ๋ฅผ ์ฌ์ฉํ๋ผ. ๋์ฌ๋ ์๋๋ค.
Good | Bad |
---|---|
Customer , WikiPage , Account , AddressParser | Manager , Processor , Data , Info |
๋ฉ์๋ ์ด๋ฆ
- ๋์ฌ ํน์ ๋์ฌ๊ตฌ๋ฅผ ์ฌ์ฉํ๋ผ.
postPayment
,deletePayment
,deletePage
,save
- ์ ๊ทผ์, ๋ณ๊ฒฝ์, ์กฐ๊ฑด์๋ get, set, is๋ก ์์ํ์.
- ์ ๊ทผ์: get
- ๋ณ๊ฒฝ์: set
- ์กฐ๊ฑด์: is, has, should
- ์์ฑ์๋ฅผ ์ค๋ฒ๋ก๋ํ ๊ฒฝ์ฐ ์ ์ ํฉํ ๋ฆฌ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๊ณ ํด๋น ์์ฑ์๋ฅผ private์ผ๋ก ์ ์ธํ์.
๊ธฐ๋ฐํ ์ด๋ฆ์ ํผํ๋ผ
ํน์ ๋ฌธํ์์๋ง ์ฌ์ฉ๋๋ ์ฌ๋ฏธ์๋ ์ด๋ฆ๋ณด๋ค ์๋๋ฅผ ๋ถ๋ช ํ ํํํ๋ ์ด๋ฆ์ ์ฌ์ฉํ์. ์์นซํ๋ฉด ์ ๋จธ๊ฐ๊ฐ์ด ๋ฐ์ด๋ ์ฌ๋๋ง ๋ณ์ ์๋๋ฅผ ํ์ ํ ์ ์๋ค.
ํ ๊ฐ๋ ์ ํ ๋จ์ด๋ฅผ ์ฌ์ฉํ๋ผ
์ถ์์ ์ธ ๊ฐ๋ ํ๋์ ๋จ์ด ํ๋๋ฅผ ์ฌ์ฉํ์.
fetch
,retrieve
,get
controller
,manager
,driver
๋๋์ฒด ๋ฌด์จ ์ฐจ์ด์ง? ๊ตฌ๋ถํด์ ์์ฑํ๋ค๋ฉด, ์ฝ์ ๋, ์ฐจ์ด์ ์ ํ๋ฒ์ ํ์ธํ ์ ์๋ค.
๋ง ์ฅ๋์ ํ์ง๋ง๋ผ
ํ ๋จ์ด๋ฅผ ๋ ๊ฐ์ง ๋ชฉ์ ์ผ๋ก ์ฌ์ฉํ์ง ๋ง์.
์๋ฏธ๋ก ์ ์ผ๋ก ํ๋์ด ๋ค๋ฅธ ์ํฉ์ด๋, ์ผ๋ฐ์ ์ผ๋ก ๋ถ๋ฅด๋ ์ด๋ฆ์ด ๊ฐ์ ๋ฐ์ํ ๋ฌธ์ ์ด๋ค. ํ์๊ฐ ๋ค๋ฅด๋ค๋ฉด ๋ค๋ฅธ ๋จ์ด๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค. ์ ๊ฒฝ์ฐ insert
, append
์ ๊ฐ์ ๋จ์ด๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๊ฒ ๋ค.
ํด๋ฒ ์์ญ์์ ๊ฐ์ ธ์จ ์ด๋ฆ์ ์ฌ์ฉํ๋ผ
์ ์ฐ์ฉ์ด, ์๊ณ ๋ฆฌ์ฆ ์ด๋ฆ, ํจํด ์ด๋ฆ, ์ํ ์ฉ์ด ๋ฑ์ ์ฌ์ฉํ์.
๊ฐ๋ฐ์๋ผ๋ฉด ๋น์ฐํ ์๊ณ ์์ JobQueue, AccountVisitor(Visitor pattern)๋ฑ์ ์ฌ์ฉํ์ง ์์ ์ด์ ๋ ์๋ค.
๋ฌธ์ ์์ญ์์ ๊ฐ์ ธ์จ ์ด๋ฆ์ ์ฌ์ฉํ๋ผ
์ ์ ํ ํ๋ก๊ทธ๋๋จธ ์ฉ์ด๊ฐ ์๊ฑฐ๋ ๋ฌธ์ ์์ญ๊ณผ ๊ด๋ จ์ด ๊น์ ์ฉ์ด์ ๊ฒฝ์ฐ ๋ฌธ์ ์์ญ ์ฉ์ด๋ฅผ ์ฌ์ฉํ์.
์ฐ์ํ ํ๋ก๊ทธ๋๋จธ/์ค๊ณ์๋ผ๋ฉด ํด๋ฒ ์์ญ๊ณผ ๋ฌธ์ ์์ญ์ ๊ตฌ๋ถํ ์ ์์ด์ผ ํ๋ค. ๊ทธ ์ค ์ด๋ค ๊ฒ์ด ๋ ์ณ์ ํ๋จ์ธ์ง ๊ฒฐ๋ก ์ ๋ด๋ฆด ์ ์๋ ํ๋จ๋ ฅ์ ๊ฐ์ ธ์ผ ํ๋ค.
์๋ฏธ์๋ ๋งฅ๋ฝ์ ์ถ๊ฐํ๋ผ
ํด๋์ค, ํจ์, namespace๋ฑ์ผ๋ก ๊ฐ์ธ์ ๋งฅ๋ฝ(Context)์ ํํํ๋ผ
๊ทธ๋๋ ๋ถ๋ถ๋ช ํ๋ค๋ฉด ์ ๋์ด๋ฅผ ์ฌ์ฉํ์.
์ด ์ํฉ์์ ๋ง์์ ๋ค์ง ์๋ ๊ฒ๋ค์ ๋ค์๊ณผ ๊ฐ๋ค.
- ํจ์๊ฐ ๊ธธ๋ค.
- ์ธ ๋ณ์๋ฅผ ํ๋์ ํจ์ ์ ๋ฐ์์ ์ฌ์ฉํ๋ค.
์ด๋ฅผ ํด๋์ค๋ก ๋ถ๋ฆฌํ์ฌ ์ฒ๋ฆฌํ๋ฉด ์๋์ ๊ฐ์์ง๋ค.
๋ถํ์ํ ๋งฅ๋ฝ์ ์์ ๋ผ
์, ์ด A ํ๋ก์ ํธ๋๊น Class ์์ A๋ฅผ ๋ฌ์์ ๊ด๋ฆฌํ๋ฉด ์ข๊ฒ ์ง?
์ ํฐ์ผ๋๋ค. IDE์์ A๋ฅผ ์ ๋ ฅํ์๋ง์ ๊ด๋ จ๋ ๋ชจ๋ ํด๋์ค๋ฅผ ์ด๊ฑฐํ๊ฒ ๋ ๊ฒ์ด๋ค. ๊ทธ ๋ฟ์ด ์๋๋ค. a์ฒ๋ผ ์ ๋์ด๋ฅผ ๋ถ์ด๋ ๊ฒ์ ๋ชจ๋์ ์ฌ์ฌ์ฉ ๊ด์ ์์๋ ์ข์ง ๋ชปํ๋ค. ์ฌ์ฌ์ฉํ๋ ค๋ฉด ์ด๋ฆ์ ๋ฐ๊ฟ์ผ ํ๋ค. GSDAccountAddress ๋์ Address๋ก๋ง ํด๋ ์ถฉ๋ถํ๋ค. ์ด๋ป๊ฒ ๋ณด๋ฉด ํ์์๋ ์ถ๊ฐ ๋จ์ด๊ฐ ๋ค์ด๊ฐ๊ฒ ๋ ๊ฒ์ด๋ค.
Summary
์ซ์ง๋ง๊ณ ๋งํ์.
์ข์ ์ด๋ฆ์ ์ฌ๋ฌ ๋ฅ๋ ฅ์ ์๊ตฌํ๋ ์ผ์ด๋ค.
- ์ค๋ช ๋ฅ๋ ฅ
- ๋ฌธํ์ ๋ฐฐ๊ฒฝ
์ฆ, ๊ต์ก์ ์ธ ์ธก๋ฉด์ด ๊ฐ์ฅ ๊ฐํ๋ค. ์ด๋ฆ์ ๋ฐ๊พธ์ง ์์ผ๋ ค๋ ์ด์ ๋ ์ฌํ์ ์ด์ ๊ฐ ๊ฐ์ฅ ํฌ๋ค. ๋ค๋ฅธ ๊ฐ๋ฐ์๊ฐ ๋ฐ๋ํ ๊น๋ด. ํ์ง๋ง ์คํ๋ ค ๋ฐ๊ฐ๊ณ ๊ณ ๋ง์ํด์ผ ํ๋ ๊ฒ์ ๊ฐ๊น๋ค. ๋๋ ค์ํ์ง ๋ง๊ณ ์๋ก์ ๋ช ๋ช ์ ์ง์ ํ๊ณ ๊ณ ์น์. ๊ทธ๋ ๊ฒ ํ๋ฉด ์ด๋ฆ์ ์ธ์ฐ๋ ๊ฒ์ ์๊ฐ์ ๋นผ์๊ธฐ์ง ์๊ณ โ์์ฐ์ค๋ฝ๊ฒ ์ฝํ๋ ์ฝ๋โ๋ฅผ ์ง๋ ๋ฐ์ ๋ ์ง์คํ ์ ์๋ค.