3줄 요약
오늘 읽은 범위
7장 오류 처리
책에서 기억하고싶은 내용
public void registerItem(Item item){
if (item != null) {
ItemRegistry registry = persistentStore.getItemRegistry();
if (registry != null) {
Item existing = registry.getItem(item.getID());
if (existing.getBillingPeriod().hasRetailOwner()) {
existing.register(item);
}
}
}
}
이런 코드 기반에서 코드를 짜왔다면 나쁘다고 느끼지 않을 지도 모르겠다고 말했는데, 정확하게 나쁘지 않았다고 느꼈다. 원래 나도 이런식으로 null 체크하면서 코드를 짰기 때문이다. 하지만 저자는 null을 반환하는 상황 자체를 만들지 말라고 한다.[139]
깨끗한 코드는 읽기도 좋아야 하지만 안정성도 높아야 한다. 이 둘은 상충하는 목표가 아니다. 오류 처리를 프로그램 논리와 분리해 독자적인 사안으로 고려하면 튼튼하고 깨끗한 코드를 작성할 수 있다. 오류 처리를 프로그램 논리와 분리하면 독립적인 추론이 가능해지며 코드 유지보수성도 크게 높아진다.[142]
읽은 소감과 떠오르는 생각
개발자는 자기가 만든 제품에 오류가 생길 경우 유저에게 알릴 필요가 있다. 오류처리를 잘 하지않으면 앱이 꺼졌을 때 유저는 왜 꺼진지도 모르고 당황한다. 뭔가 만들면 항상 그랬던 것 같다. 유저는 앱이 비정상적인 활동을 보이면 그냥 안된다고만 한다. 구체적인 설명이 없다. 그렇게 안된다고 말하기 전에 예외처리, 오류처리로 그 유저가 왜 종료된건지 고지를 했어야하는게 맞았다. 돌이켜보니.
null 체크 후 다음 동작으로 넘어가는 것을 아무렇지 않게 생각했었는데 안좋은 습관이라고 한다. 근데 정말 이렇게 쓰면 다른 사람이 저 null을 봤을 때도 그렇고 코드가 정확히 진행되는건지 아닌건지 파악이 어려울 수도 있을 것 같다고 생각했다. 고쳐야겠다. 다음부턴 최대한 내 코드에 null은 없게 고쳐나가자.
추가로 null도 반환하지말라고한다. 동의한다... return; || return null; 쓰지 말자 ㅠㅠ
궁금한 내용이나 잘 이해되지 않는 내용
공부법