ํด๋น ๊ธ์ Robert C.Martin ํด๋ฆฐ ์ฝ๋ ๋ผ๋ ์ฑ ์ ์ฝ๊ณ ํ์ตํ ๋ด์ฉ์ ์ ๋ฆฌ ๋ฐ ํ๊ณ ํ๋ ๊ธ ์ ๋๋ค. ์์ธํ ์ฌํญ์ YES 24 ํด๋ฆฐ ์ฝ๋ - ์ ์์ผ ์ํํธ์จ์ด ์ฅ์ธ ์ ์ ์์ ํ์ธํด์ฃผ์ธ์.
ํด๋ฆฐ ์ฝ๋ - ์ ์์ผ ์ํํธ์จ์ด ์ฅ์ธ ์ ์ (Uncle Bob)
- ์ํค๋ถ์ค
- ์ง์์ด: Robert C.Martin (Uncle Bob)
- ์ฎ๊ธด์ด: ๋ฐ์ฌํธ, ์ดํด์
์ด๋ฒ ์ฅ์์ ์ด์ผ๊ธฐํ๊ณ ์ ํ๋ ๊ฒ
์ด๋ฒ ์ฅ์์๋ ์๋ฏธ ์๋ ์ด๋ฆ์ ์ ์ง๋ ๋ช๊ฐ์ง ๊ท์น์ ์ด์ผ๊ธฐํ๋ค.
Naming ์ ์๋ฏธ๋ฅผ ํด์ํ ์ฑ ์์ด ๋ ์์๊ฒ ์๋ ๋ ผ๋ฌธ ๋ชจ๋ธ์ด ์๋๋ผ ์๋๋ฅผ ๋ฐํ ์ฑ ์์ด ์๋ ์ก์ง ๋ชจ๋ธ์ด ์ ํฉํ๋ค
์๋๋ฅผ ๋ถ๋ช ํ ๋ฐํ๋ผ
- ์ฐ๋ฆฌ๊ฐ ํ๋ naming ์ ๋ค์๊ณผ ๊ฐ์ ์ง๋ฌธ์ ๋ตํ ์ ์์ด์ผ ํ๋ค.
- ๋ณ์, ํจ์, ํด๋์ค์ ์กด์ฌ ์ด์ ๋?
- ์ฌ์ฉ ๋ฐฉ๋ฒ์?
- ๊ฒฐ๊ตญ ์์ ์ง๋ฌธ์ ์ ์ ํ ๋๋ตํ์ง ๋ชปํ๋ค๋ฉด ์๋๋ฅผ ๋ถ๋ช ํ ๋๋ฌ๋ด์ง ๋ชปํ๋ค๋ ๊ฒ์ด๋ค.
public List<int[]> getThem() {
List<int[]> list = new ArrayList<>();
for (int[] x : theList) {
if (x[0] == 4)
list.add(x);
}
return list;
}
- ์์ ์ฝ๋๋ ์ฝ๋ ๋งฅ๋ฝ์ด ์ฝ๋ ์์ฒด์ ๋ช ์์ ์ผ๋ก ๋๋ฌ๋์ง ์์
public List<int[]> getFlaggedCells() {
List<int[]> flaggedCells = new ArrayList<>();
for (int[] cell : gameBoard) {
// if ๋ฌธ์ ๋ช
์์ ์ธ ํจ์๋ฅผ ์ด์ฉํด์ ๊ฐ์ ํ ์ ์๋ค.
// --> cell.isFlagged()
if (cell[STATUS_VALUE] == FLAGGED)
flaggedCells.add(cell);
}
return flaggedCells;
}
- ์ด๋ ๊ฒ ๊ฐ๊ฐ์ ์ด๋ฆ์ ์๋๋ฅผ ๋ช ์์ ์ผ๋ก ๋๋ฌ๋ธ๋ค๋ฉด ๊ฐ๋ ์ฑ์ด ๋ ์ข์ ์ฝ๋๊ฐ ๋์ด
๊ทธ๋ฆ๋ ์ ๋ณด๋ฅผ ํผํ๋ผ
- ์ฝ์ด๋ ๋ ์์๊ฒ ๊ทธ๋ฆ๋ ์ ๋ณด๋ฅผ ์ ๊ณตํ ์ ์๋ค.
- Grouping ์ ์ํด xxxList ๋ผ๋ ์ด๋ฆ ๋ํ ๊ทธ๋ฆ๋ ์ ๋ณด์ผ ์ ์๋ค.
AccoutList
(X) --Accounts
(O)- List ๋ผ๋ ๊ฒ์ ํ๋ก๊ทธ๋๋จธ์๊ฒ ํน์ํ ์๋ฏธ๋ฅผ ์ง๋๊ณ ์๊ธฐ ๋๋ฌธ์ ๊ทธ๋ฆ๋ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ์ ์ด๋ค
- ์๋ก ํก์ฌํ ์ด๋ฆ์ ์ฌ์ฉํ์ง ์๋๋ก ์ฃผ์ํ๋ค
์๋ฏธ ์๊ฒ ๊ตฌ๋ถํ๋ผ
- ์ด๋ฆ์ด ๋ฌ๋ผ์ง๋ค๋ฉด ์๋ฏธ๋ ๋ฌ๋ผ์ ธ์ผ ํ๋ค
void copyChar(char[] a1, char[] a2)
๋ณด๋ค๋void copyChar(char[] source, char[] destination)
์ด ์ข๋ค.
- ๋ถ์ฉ์ด๋ฅผ ์ฌ์ฉํ์ง ๋ง์
Account
์AccountInfo
์ ์ฐจ์ด๋ฅผ ๊ตฌ๋ถํ ์ ์์๊น?Message
์MessageString
์ ์ฐจ์ด๊ฐ ๋ฌด์์ผ๊น?
ํ ๊ฐ๋ ์ ํ ๋จ์ด๋ง ์ฌ์ฉํ๋ผ
- ๋์ผํ ๊ฐ๋
(
fetch
,get
) ์ด ์์ ๋ ํ๋๋ง ์ฌ์ฉํด์ผ ํ๋ค. - ๋ค๋ฅธ ๊ฐ๋ ์ ๊ฐ์ ์ฉ์ด๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ๋ง์ฅ๋์ด๋ค
- ๊ทธ๋ ๋ค๊ณ ๋งฅ๋ฝ์ด ๋ง์ง ์์์๋ ๋ถ๊ตฌํ๊ณ
add
์insert
๋ฅผ ๊ตฌ๋ถ์ง์ง ์๋ ํ๋์ ์ข์ง ์๋ค.- ๋งฅ๋ฝ์ ์ ์ดํดํ๊ณ ์ฌ์ฉํด์ผ ํ๋ค
์ด์ธ์๋
- ๊ฒ์ํ๊ธฐ ์ฌ์ด ์ด๋ฆ์ ์ ํํ๋ผ
- ์ธ์ฝ๋ฉ์ ํผํ๋ผ
- ์์ ์ ๊ธฐ์ต๋ ฅ์ ์๋ํ์ง ๋ง๋ผ
- ๊ธฐ๋ฐํ ์ด๋ฆ์ ํผํ๋ผ
- ํด๋ฒ ์์ญ์์ ๊ฐ์ ธ์จ ์ด๋ฆ์ ์ฌ์ฉํ๋ผ
- ์๊ณ ๋ฆฌ์ฆ, ๋์์ธ ํจํด๋ฑ์ ์ฐจ์ฉํ ์ด๋ฆ์ ํจ๊ป ์ฌ์ฉํ๋ ๊ฒ๋ ์ข์ ์ ํ์ด๋ค.
- ๋ชจ๋ ์ด๋ฆ์ ๋๋ฉ์ธ์์ ๊ฐ์ ธ์ค๋ คํ์ง ์์๋ ๋๋ค.
๋์ ํด์๊ณผ ํ๊ณ
๋ด๊ฐ ์ํ ์กฐ์ง์ CTO ๋์ ์ฝ๋ฉ์ ๊ธ์ฐ๊ธฐ์ ๊ฐ๋ค ๋ผ๋ ๋ง์ ์์ฃผ ํ์ ๋ค.
์ฝ๋ฉ์ ๊ธ์ฐ๊ธฐ์ ๋น์ทํ๊ธฐ์ ๋ง์ด ์จ๋ณด๊ณ ์ฝ์ด๋ด์ผ ์ค๋ ฅ์ด ๋๋ค๊ณ ํ๋ค.
์ด๋ฅผ ์ค์ฒํ๊ธฐ ์ํ ๊ฐ์ฅ ๋จผ์ ํ์ํ ๊ฐ๋ ์ด ๋ฐ๋ก ์๋ฏธ ์๋ ์ด๋ฆ ์ง๊ธฐ๋ผ๊ณ ์๊ฐํ๋ค.
์ด๋ฌํ ์๋ฏธ ์๋ ์ด๋ฆ ์ง๊ธฐ๊ฐ ๊ฐ๋ฅํ๊ธฐ ์ํด์๋ ๋จ์ง ๊ธฐ์ ๋ฅ๋ ฅ, ๋น์ฆ๋์ค ์ดํด๋๋ง ๋์์ ๋๋ ๊ฒ์ด ์๋๋ผ ์ค๋ช ๋ฅ๋ ฅ, ๋ฌธํ์ ๋ฐฐ๊ฒฝ์ด ํจ๊ป ๋์ด์ผ ํ๋ค.
๋๊ธ