티스토리 뷰

Development/.NET

Empty Arrays

jakard 2009. 12. 30. 11:00

컬렉션이나 문자열을 반환할 때 보통 생각없이 Null을 리턴하는 경우가 있었는데 Microsoft의 Guideline에는 Mananged Code인 경우에 Null을 리턴하는 경우를 피하라고 하네요.
링크에 걸린 글에서 말하기를

1. Null을 리턴하는 경우에는 NullReferenceException이 발생할 가능성을 있기 때문이고,
2. Null을 리턴하는 경우와 빈 컬력션이나 빈 문자열을 반환할 경우 처리가 그리 다르지 않기 때문이며,
3. .NET Framework의 경우에도 예외적인 경우가 아닌 경우에는 Null에 대한 고려를 개발자가 할 필요가 없게 하기 위해 Null을 리턴하지 않는다고 합니다.

생각해보면 메소드에서 Null을 리턴하는 경우는 그 코드를 작성한 사람이 아닌 경우에 Null인 경우를 고려해서 Null 체크를 해 주거나, 또는 Null과 Empty인 경우를 둘다 처리하는 경우가 자주 있었던거 같습니다.

Link된 글에서는 빈 Array나 빈 문자열에 대한 메모리 할당에 대한 트레이드오프도 언급하고 있습니다.
하지만 그 비용이 아주 미미하고, 빈 컬렉션에 대한 스태틱변수를 공유하면 우려할 만한 문제는 아니라고 언급하고 있습니다.