NULL

    [Java] 빠져나올 수 없는 null 처리의 늪 - 2

    null 관련 문제 돌아보기 이 전 포스팅의 예제 코드를 통해 살펴본 null과 관련된 문제들은 크게 2가지로 요약된다. 런타임에 NPE(NullPointerException)라는 예외를 발생시킬 수 있음 NPE 방어를 위해서 들어간 null 체크 로직 때문에 코드 가독성과 유지 보수성이 떨어짐 그냥 두자니 곳곳에 숨어서 일으켜 장애를 유발하고, 조치를 하자니 코드를 엉망으로 만드는 null, 어떻게 하면 조금 더 현명하게 다룰 수 있을까? 함수형 언어에서 그 해법을 찾다 스칼라나 하스켈과 같은 소위 함수형 언어들은 전혀 다른 방법으로 이 문제를 해결한다. 자바가 "존재하지 않는 값"을 표현하기 위해서 null을 사용했다면, 이 함수형 언어들은 "존재할지 안 할지 모르는 값"을 표현할 수 있는 별개의 타..

    [Java] 빠져나올 수 없는 null 처리의 늪 - 1

    null이란? null 참조(null reference) 또는 null 포인터(null pointer)란 유효한 객체(Object)를 포인터(또는 참조) 하지 않고 있음을 가리키기 위한 저장된 값을 말한다. null은 왜 나쁜가? Ad-hoc(임시방편, 이것을 위해서만 만들어진) 에러 핸들링 객체를 받을 경우 항상 null인지 유효한 객체인지 체크해야 한다. 모호한 의도(또는 의미) 모호성을 없애려면 항상 실제 객체를 반환하거나, null 객체 반환 또는 exception을 던져야한다. 컴퓨터적 사고 vs 객체적 사고 - Hello, is it a software department? - 안녕하세요. 소프트웨어 부서인가요? - Yes. - 네. - Let me talk to your employee "J..