์บ ํ์ฅ์ ์ฒ์ ์์ ๋๋ณด๋ค ๋ ๊นจ๊ธํ๊ฒ ํด๋๊ณ ๋ ๋๋ผ. - ๋ณด์ด์ค์นด์ฐํธ ๊ท์น
์๋ฏธ ์๋ ์ด๋ฆ.(Naming)
์๋๋ฅผ ๋ถ๋ช ํ ๋ฐํ๊ธฐ.
- ์๋๋ฅผ ๋ช ํํ๊ฒ ํจ์ผ๋ก์จ ์ฝ๋์ ๊ฐ๋ ์ฑ์ ๋ํ ์ ์๋ค.
Bad Example
public List<int[]> getThem() {
List<int[]> list1 = new ArrayList<int[]>(); // ์ด๋ค ์ ๋ณด๋ฅผ ๋ด๋ list์ธ๊ฐ?
for (int[] x : theList) {
if (x[0] == 4) { // list์ ์ฒซ๋ฒ์งธ ๊ฐ์ ์ด๋ค์๋ฏธ๋ฅผ ๊ฐ์ง๋ฉฐ 4๋ ์ด๋ค๊ฐ์ ์๋ฏธํ๋๊ฐ?
list1.add(x);
}
}
return list1; // ๋ฐํํ๋ ๋ฆฌ์คํธ list1์ ์ด๋ป๊ฒ ์ฌ์ฉํ๋๊ฐ?
}
Good Example
public List<Cell> getFlaggedCells() {
List<Cell> flaggedCells = new ArrayList<Cell>(); // flag๋ Cell๋ค์ ๋ด๋ list
for (Cell cell : gameBoard) {
if (cell.isFlagged()) { // ํ์๋ cell์ธ์ง ํ์ธ.
flaggedCells.add(cell);
}
}
return flaggedCells; // ํ์๋ Cell๋ค์ list
}
๊ทธ๋ฆ๋ ์ ๋ณด๋ฅผ ํผํ๊ธฐ.
- ๊ฐ๋ฐ์์๊ฒ๋ ํน์ํ ์๋ฏธ๋ฅผ ๊ฐ์ง๋ ๋จ์ด(List ๋ฑ)๋
์ค์ ์ปจํ ์ด๋๊ฐ List
๊ฐ ์๋ ์ด์ accountList์ ๊ฐ์ด ๋ณ์๋ช ์ ๋ถ์ด์ง ๋ง์. - ์ฐจ๋ผ๋ฆฌ accountGroup, bunchOfAccounts, accounts๋ฑ์ผ๋ก ๋ช ๋ช ํ์.
- ๋ด๊ฐ ์์ฃผ์ฐ๋
Info
,Data
๋a
์an
,the
์ ๋ง์ฐฌ๊ฐ์ง์ด๋ฉฐ ์๋ฏธ๋ฅผ ๊ตฌ๋ถํ๊ธฐ ํ๋ ์ฉ์ด์ด๋ค. ๋ถ์ฉ์ด-noise word
์ ์ฌ์ฉํ์ง๋ง์.
๋ฐ์ํ๊ธฐ ์ฌ์ด ์ด๋ฆ์ ์ฌ์ฉํ๊ธฐ.
Bad Example
class DtaRcrd102 {
private Date genymdhms;
private Date modymdhms;
private final String pszqint = "102";
};
Good Example
class Customer {
private Date generationTimestamp;
private Date modificationTimestamp;
private final String recordId = "102";
};
์ธ์ฝ๋ฉ์ ํผํ๊ธฐ.
- ์ถ์ํ๋ Class์ด๋ฆ์ ShapeFactory๋ก ์ ์ํ๊ณ ์์๋ฐ์ ๊ตฌํํ๋ Class์ด๋ฆ์
ShapeFactoryImp
,CShapeFactory
์ผ๋ก ์ ์ํ๋ค.
ํด๋์ค ์ด๋ฆ
- ๋ช
์ฌ ํน์ ๋ช
์ฌ๊ตฌ๋ฅผ ์ฌ์ฉํ๊ธฐ.(
Customer
,WikiPage
,Account
,AddressParser
) Manager
,Processor
,Data
,Info
์ ๊ฐ์ ๋จ์ด๋ ํผํ์ โ๋ถ์ฉ์ด-noise word
๋์ฌ
๋ ์ฌ์ฉํ์ง ์๋๋ค.
๋ฉ์๋ ์ด๋ฆ
๋์ฌ
๋๋์ฌ๊ตฌ
๊ฐ ์ ํฉํ๋ค. (postPayment
,deletePage
,save
)get
,set
,is
Complex fulcrumPoint = new Complex(23.0);
Complex fulcrumPoint = Complex.FromRealNumber(23.0); // better
ํ ๊ฐ๋ ์ ํ ๋จ์ด๋ฅผ ์ฌ์ฉํ๊ธฐ.
- ํ๋๋ง ์ฌ์ฉํ์ฌ ํต์ผ์ฑ ์ป๊ธฐ.
fetch
,retrieve
,get
controller
,manager
,driver
๋ง์ฅ๋์ ํ์ง ๋ง๊ธฐ.
add
์ ์ญํ ์ A์ B๋ฅผ ๋ํ๋ ์๋ฏธ์ด๋ค.- ์ค๊ฐ์ ์ฝ์
ํ๋ ํจ์์ ์ด๋ฆ๋
add
๋ผ๊ณ ์ ์ํ๋ฉดadd
์ ์๋ฏธ๋ ๋ช ํํ์ง ๋ชปํ๋ค. add
๋์insert
,append
๋ก ์ ๋นํ๋ค.
์๋ฏธ์๋ ๋งฅ๋ฝ ์ถ๊ฐํ๊ธฐ.
Bad Example
- ์ธ ๋ณ์์ ์๋ฏธ๊ฐ ๋ถ๋ถ๋ช ํ๋ค.
private void printGuessStatistics(char candidate, int count) {
String number;
String verb;
String pluralModifier;
if (count == 0) {
number = "no";
verb = "are";
pluralModifier = "s";
} else if (count == 1) {
number = "1";
verb = "is";
pluralModifier = "";
} else {
number = Integer.toString(count);
verb = "are";
pluralModifier = "s";
}
String guessMessage = String.format("There %s %s %s%s", verb, number, candidate, pluralModifier );
print(guessMessage);
}
Good Example
- ํจ์๋ฅผ ์ชผ๊ฐ๊ธฐ๊ฐ ์ฌ์์ง๋ฏ๋ก ์๊ณ ๋ฆฌ์ฆ๋ ์ข ๋ ๋ช ํํด์ง๋ค.
public class GuessStatisticsMessage {
private String number;
private String verb;
private String pluralModifier;
public String make(char candidate, int count) {
createPluralDependentMessageParts(count);
return String.format("There %s %s %s%s", verb, number, candidate, pluralModifier );
}
private void createPluralDependentMessageParts(int count) {
if (count == 0) {
thereAreNoLetters();
} else if (count == 1) {
thereIsOneLetter();
} else {
thereAreManyLetters(count);
}
}
private void thereAreManyLetters(int count) {
number = Integer.toString(count);
verb = "are";
pluralModifier = "s";
}
private void thereIsOneLetter() {
number = "1";
verb = "is";
pluralModifier = "";
}
private void thereAreNoLetters() {
number = "no";
verb = "are";
pluralModifier = "s";
}
}