Community

개발자 99% 커뮤니티에서 수다 떨어요!

← Go back
TIL 2장. 의미 있는 이름
#clean_code
2년 전
1,040


TIL (Today I Learned)

2022.02.20.(일)

오늘 읽은 범위

2장 - 의미 있는 이름

책에서 기억하고 싶은 내용을 써보세요.

  • 코드는 변수/메서드 명으로부터 맥락이 드러나야 한다.

// 지뢰찾기에서 표식이 있는 셀만 찾는다.
// Cell은 int[]에 이름을 붙인 클래스에 불과하다.
public List<Cell> getFlaggedCells() {
    List<Cell> flaggedCells = new ArrayList<Cell>();
    for (Cell cell : gameBoard)
        if (cell.isFlagged())
            flaggedCells.add(cell);
    return flaggedCells
}
  • 불용어(Noise Word)를 경계해야 한다.

    ex) account, theAccount, accountInfo => 같은 대상을 다르게 표현한 것

  • 인코딩을 피하라 : 변수에 타입, 멤버, 인터페이스 등을 의미하는 접두사/접미어는 피하는 편이 좋다.

    ex) IShapeFactory -> ShapeFactory

  • 생성자 오버로딩 시 정적 팩토리 메소드 고려

// 정적 생성자 메소드는 생성자에 의미를 부여한다.
class LocalTime {
    private LocalTime()
    
    static LocalTime of(int hour, int minute) {...}
}
  • 해법 영역 vs 문제 영역 (Solution Domain vs Problem Domain)

    • Problem Domain: 제품과 관계된 영역 (전자제품 in 전자제품샵)

    • Solution Domain: 기술과 관계된 영역 (디자인 패턴, 전산 용어 등)

  • 서로 밀접한 연관이 있는 변수는 하나의 클래스로 묶어야 한다.
    ex) state, province, street => Address

오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요

변수명을 지을 때에는 불필요한 정보가 담기지 않도록 조심하자.
manager, controller, helper 등 동일한 맥락에 다른 이름을 사용하지 않도록 주의해야 한다.

궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.

  • // 르블랑의 법칙? (LeBlanc's Law states) - "Later equals never" is used in the context of software development, but may be applied more broadly to other areas. The law is attributed to Dave LeBlanc.