์บ ํ”„์žฅ์€ ์ฒ˜์Œ ์™”์„ ๋•Œ๋ณด๋‹ค ๋” ๊นจ๊ธ‹ํ•˜๊ฒŒ ํ•ด๋†“๊ณ  ๋– ๋‚˜๋ผ. - ๋ณด์ด์Šค์นด์šฐํŠธ ๊ทœ์น™

์˜๋ฏธ ์žˆ๋Š” ์ด๋ฆ„.(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";
    }
}