이전에 "대단한 PHP"란 글을 쓴적이 있다. 1년이 넘어선 지금, 우선 한가지 사실을 더 알았다. null이어도 동일하다. 즉 null 혹은 false인 벨류는 어떤 첨자로 엑세스를 하려 해도 null이 나온다.

$a = null; // or false
var_dump($a['anyIndex']);
 최근에 리뷰중 아래와 같은 코드를 봤다.
list($a, $b) = getSomeFunctionThatReturnArrayOrNull(...);
엄격한 검사를 요구하는(특히 세그폴이 잘나는) 언어를 쓰다보니 리턴값이 null일 때 문제가 없느냐고 질문하니 위의 이유로 인해 두 변수 모두 null로 셋팅이 잘 된다는 것이다. 즉 에러 케이스때 둘중 한 변수만 null 검사를 하면 구지 리턴값이 널인지 확인하고 각 변수에 어사인 할 필요 없이 위처럼 바로 쓸 수 있다는 것이다.

아무튼 그사람과는 워닝 한줄도 없이 저런 식의 처리가 가능한게 구려~ 라고 이야기 하다가 나눈 대화(대충 각색).

겐도 : 아닌거 같아요. PHP 언어에서 저 피쳐를 생각한 사람은 정말 대단할걸요?
상대방 : 어떤면에서요?
겐도 : 저 성격을 안다면 저의 많은 코드들이 상당히 간단하게 변경될 수 있겠군요. 함수 리턴이나 로직의 디자인만 잘한다면 쉬운 흐름의 로직을 작성할 수 있어요.
상대방 : 그런 부분이 있군요.
겐도 : 그럼 지금 까지 보아온 험블하다고 생각한 코드들이.. 사실 그 코드를 작성한 사람들은 저런 성질을 잘 알고 작성한 코드였군요!!! 오호.. 대단하여라.
상대방 : 정말 그런지는 며느리도 모르겠죠 :)

사실 위의 특성은 이런 장점보단 대충대충 짜도 에러케이스가 스무스 하게 넘어갈 수 있다는 성질이 있다. 마치 PHP의 magic_quote처럼 코더의 실수를 언어가 커버해 준다. 물론 다른 악영향이 많긴 하지만, 일단 컴파일 제대로 하는데 며칠씩 걸리는 어려운 언어 보다야 초보들이 접근하기 쉽게 한다.

~~~~~~~~~~

자신이 아는 만큼 세상(월드, 계)이 보이는 것이다.
자신의 밥줄로 쓸 만큼 잘 아는 언어라도, 오히려 밥줄이기에 매일 그 부분도 공부다!
신고


티스토리 툴바