{"componentChunkName":"component---src-templates-post-template-jsx","path":"/history/posts/2020-09-14--001","result":{"data":{"site":{"siteMetadata":{"title":"Blog by Eunyoung","subtitle":"작업 기록 블로그","copyright":"© All rights reserved.","author":{"name":"EunYoung","twitter":"#"},"disqusShortname":"","url":"https://ssongey.github.io"}},"markdownRemark":{"id":"bb558994-fc23-57e0-bdfe-4988ceeab577","html":"<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">return result.isEmpty() ? null : new ArrayList&lt;&gt;(result);</code></pre></div>\n<p>위와 같이 null을 반환하는 메서드를 작성함에 있어 문제점을 느끼지 못했다.<br>\n값이 없으므로 당연히 null로 반환을 하는걸 당연하게 생각했다.</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\"># Null 정의\n - 변수에 아무것도 할당되지 않았을 때\n - 정의되지 않음\n - 특별한 값이 없음</code></pre></div>\n<p>근데 아니였구나… 잘못 알고 있었구나.. 그랬구나..</p>\n<p>아래와 같이 정리한다.</p>\n<ol>\n<li>\n<p>API에 null을 최대한 쓰지 말자</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\"># 반환 값이 있어야 한다면 null 대신 예외를 던지자\n# 빈 반환값은 빈 컬렉션이나 Null 객체를 사용하자</code></pre></div>\n</li>\n<li>\n<p>매번 빈 컬렉션 할당하여 반환하지 말고 빈 불변 컬렉션을 반환하도록 하자.</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\"># Collections 상수사용\nCollections.emptyList, Collections.emptyMap, ..\n# 불변 객체 선언 후 사용\nprivate static final String[] EMPTY_ARRAY = new String[0];</code></pre></div>\n</li>\n<li>선택적 매개변수는 null 대신 다형성(overload)를 사용하자</li>\n<li>\n<p>계약에 의한 설계(Design by Contract)를 하자 </p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\"># API 규약을 소비자와 제공자 사이에 지켜야 할 엄격한 계약으로 여기는 설계방법\n# 형식적 규약 외에 사전 조건과 사후 조건과 유지 조건을 포함\n## 사전조건: 보호절(guard clause)\n- 단정문\n- Objects 메서드\n- IllegalArgumentException\n- NullPointException</code></pre></div>\n</li>\n</ol>","fields":{"tagSlugs":["/tags/코드리뷰/","/tags/null/"],"slug":"/history/posts/2020-09-14--001"},"frontmatter":{"title":"[코드리뷰] Null이 아닌 빈 컬렉션이나 배열을 반환하라","tags":["코드리뷰","Null"],"date":"2020-09-14","description":""}}},"pageContext":{"slug":"/history/posts/2020-09-14--001"}},"staticQueryHashes":[]}