개발자 99% 커뮤니티에서 수다 떨어요!
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.