기억하고 싶은 부분
- 뭔가 잘못될 가능성은 늘 존재한다. 뭔가 잘못되면 바로 잡을 책임은 바로 우리 프로그래머에게 있다.
- 어떤 면에서 try 블록은 트랜잭션과 비슷하다. try 블록에서 무슨 일이 생기든지 catch 블록은 프로그램 상태를 일관성 있게 유지해야 한다.
- null을 반환하는 습관
- 흔히 저지르는 바람에 오류를 유발하는 행위를 설명하면서 첫 번째 예시로 들음
- null을 반환하는 코드는 일거리를 늘릴 뿐만 아니라 호출자에게 문제를 떠넘긴다. 누구하나라도 null 확인을 빼먹는다면 애플리케이션이 통제 불능에 빠질지도 모른다.
- null 확인이 너무 많아 문제. 메서드에서 null을 반환하고픈 유혹이 든다면 그 대신 예외를 던지거나 특수 사례 객체를 반환한다.
- 특수 사례 패턴 (SPECIAL CASE PATTERN)
- 클래스를 만들거나 객체를 조작해 특수 사례를 처리하는 방식
Before
try {
MealExpsenses expenses = expenseReportDAO.getMeals(employee.getID());
m_total += express.getTotal();
} catch(MealExpenseNotFound e) {
m_total += getMealPerDiem();
}
After
MealExpsenses expenses = expenseReportDAO.**getMeals(employee.getID())**;
m_total += express.getTotal();
소감
- null을 던지지 말라는 부분이 생각지 못한 부분이라 인상 깊었다.
그러면서도 꼭 저 방식이 맞는가라는 의문이 든다. - C 같은 경우에는 null을 보내야 할 때가 있는데 모든 언어에 맞출 수는 없겠다는 생각이 든다.
책에서는 return 값이 배열이었으므로 빈 배열을 return 하는 게 낫다고 하는데 빈 배열을 여러 언어에서 null과 비슷하게 처리하기 쉽겠지만 언어의 특성에 따라 달라질 부분이라 언어의 특성을 잘 알아야 null return을 회피해서 오류처리가 가능하다 생각 든다. - 책에서 들었던 null return이 나쁘다 하는 사례들은 납득이 되었지만 반례는 무엇이 있을까라는 생각이 든다.
- 어떤 회사에서는 clean code 책을 열렬히 믿는 사람을 뽑지 않는다고 하는데 null return 하지 말라는 부분이 그런 경우 중 하나가 될 수 있지 않을까 생각 들었다
'CS > CS Book' 카테고리의 다른 글
[Clean Code | 10장 클래스 ] Day15,16 (0) | 2024.02.13 |
---|---|
[Clean Code | 9장 단위 테스트 ] Day14 (0) | 2024.02.10 |
[Clean Code | 6장 객체와 자료구조] Day09 (0) | 2024.02.04 |
[Clean Code | 5장 형식 맞추기 ] Day08 (0) | 2024.02.04 |
[Clean Code] Day07 Practice (0) | 2024.02.04 |