이 글의 개념 및 코드들은 책을 읽으며 정리한 내용을 바탕으로 작성하였습니다.
Try/Catch 블록을
별도 함수로 뽑아내면
코드가 깔끔해진다.
Before
public void delete(Page page) {
try {
deletePage(page);
registry.deleteReference(page.name);
configKyes.deleteKey(page.name.makeKey());
} catch (Exception e) {
logger.log(e.getMessage());
}
}
After
public void delete(Page page) {
try {
deletePageAndAllReferences(page);
} catch (Exception e) {
logError(e);
}
}
private void deletePageAndAllReferences(Page page) throws Exception {
deletePage(page);
registry.deleteReference(page.name);
configKyes.deleteKey(page.name.makeKey());
}
private void logError(Exception e) {
logger.log(e.getMessage());
}
실제로 페이지를 제거하는 함수는 deletePageAndAllReferences이다.
deletePageAndAllReferences 함수는 예외를 처리하지 않는다.
예외 처리는 logError 함수가 담당한다.
이렇게 정상 동작과 오류 처리 동작을 분리하면
코드를 이해하고 수정하기 쉬워진다.
이 글의 개념 및 코드들은 책을 읽으며 정리한 내용을 바탕으로 작성하였습니다.
대다수의 이름은 분명하지 못하다.
그럴 경우엔 접두어를 붙혀보자.
이 글의 개념 및 코드들은 책을 읽으며 정리한 내용을 바탕으로 작성하였습니다.
본질적으로 Switch 문은 N가지를 처리한다.
그렇기 때문에 Switch 문은 작게 만들기 어렵다.
하지만 다형성을 이용하여
각 Switch 문을 저차원 클래스에 숨기는 방법이 있다.
이 글의 개념 및 코드들은 책을 읽으며 정리한 내용을 바탕으로 작성하였습니다.
이 글의 개념 및 코드들은 책을 읽으며 정리한 내용을 바탕으로 작성하였습니다.
클래스 이름과 객체 이름은
명사나 명사구가 적합하다.
동사는 사용하지 않는다.
좋은 예
ex) Customer, WikiPage, Account, AddressParser
나쁜 예
ex) Manager, Processor, Data, Info