3.3 ์ธ์์ ๊ฐ์ผ๋ก NULL์ ์ ๋ ํ์ฉํ์ง ๋ง์ธ์๊ฒฐ๋ก 3.4 ์ถฉ์ฑ์ค๋ฌ์ฐ๋ฉด์ ๋ถ๋ณ์ด๊ฑฐ๋, ์๋๋ฉด ์์์ด๊ฑฐ๋๊ฒฐ๋ก
3.3 ์ธ์์ ๊ฐ์ผ๋ก NULL์ ์ ๋ ํ์ฉํ์ง ๋ง์ธ์
์ฝ๋ ์ด๋๊ฐ์ NULL์ด ์กด์ฌํ๋ฉด ์ฐ๋ฆฌ๋ ์ปค๋ค๋ ์ค์๋ฅผ ์ ์ง๋ฅด๊ณ ์๋ค?
- NULL์ ์ฌ์ฉํ๋ ํธ์ด ๋ ํธ๋ฆฌํ๊ณ ๊ฒฝ์ ์ ์ธ ์ ๊ทผ๋ฐฉ๋ฒ ์ฒ๋ผ ๋ณด์ผ ์ ์๊ณ , ๋ ผ๋ฆฌ์ ์ด๋ผ๊ณ ์๊ฐํ ์ ์๊ฒ ์ง๋ง ๊ฐ๊ฐ์ ๊ฐ์ฒด๊ฐ ์์ ์ ํ๋์ ์จ์ ํ ์ฑ ์์ง๋ค๋ ๊ฐ์ฒด ํจ๋ฌ๋ค์๊ณผ๋ ์๋ฐ๋๋ ์์ด๋์ด๋ผ๊ณ ํ ์ ์๋ค.
public Iterable<File> find(String mask) { if (mask == null) { // ๋ชจ๋ ํ์ผ์ ์ฐพ๋๋ค. } else { // ๋ง์คํฌ๋ฅผ ์ฌ์ฉํด์ ํ์ผ์ ์ฐพ๋๋ค. } } // ๊ฐ์ ์ฝ๋ 1 public Iterable<File> find(Mask mask) { if(mask.empty()) { // ๋ชจ๋ ํ์ผ์ ์ฐพ๋๋ค. } else { // ๋ง์คํฌ๋ฅผ ์ฌ์ฉํด์ ํ์ผ์ ์ฐพ๋๋ค. } } // ๊ฐ์ ์ฝ๋ 2 public Iterable<File> find(Mask mask) { Collection<File> files = new LinkedList<>(); for (File file : //๋ชจ๋ ํ์ผ) { if(mask.matches(file)) { file.add(file); } } return files; }
- Mask ๊ฐ์ฒด๋ฅผ ์ฐ๋ฆฌ๊ฐ ์กด์คํ๋ค๋ฉด Mask ๊ฐ์ฒด ์ค์ค๋ก ์กฐ๊ฑด์กด์ฌ์ ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ๊ฒ ํ์ ๊ฒ์ด๋ค.
- ๊ฒ๋ชจ์ต๋ง์ผ๋ก ๊ฐ์ฒด๋ฅผ ํ๋จํด์๋ ์๋๋ค. โ์ง์ง"๊ฐ์ฒด๋ผ๋ฉด ๋ํ์ ์ํ ๊ฒ์ด๋ฉฐ NULL์ด๋ฉด ๋์ํ์ง ์๊ฒ ๋ค๋ ์์ผ๋ก ๊ฐ์ฒด์ ์์ฌ์ํตํด์๋ ์๋๋ค.
- ์ธ์ ๊ฐ์ผ๋ก NULL์ ํ์ฉํ๋ฉด mask==null๊ณผ ๊ฐ์ ๋น๊ต๋ฌธ์ ์ฌ์ฉํ ์ ๋ฐ์ ์๊ณ , ๊ฐ์ฒด์ ํ๋ ฅํ ๋๋ง๋ค ๊ฐ์ฒด์ โ์ค์ฒด"๋ฅผ ํ์ธํ๋ ๊ฒ ๋ง๊ณ ๋ NULL์ธ์ง ์ฌ๋ถ๋ฅผ ํ๋จํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋ค.
- ๋ํ NULL ์ฌ๋ถ๋ฅผ ์ฒดํฌํจ์ผ๋ก์จ ๊ฐ์ฒด๊ฐ ๋งก์์ผ ํ๋ ์๋น๋์ ์ฑ ์์ ๋นผ์๊ฒ ๋๋ค.
๊ฒฐ๋ก
- ์ด ๋ถ๋ถ์ ๋จ์ง NULL์ ์ฒดํฌํด์ ๋ฐฉ์งํ์ง๋ง๊ณ NULL์ ๋นจ๋ฆฌ ์ฐพ์์ ๋์ํด์ NULL์ฐธ์กฐ๊ฐ ์๋ ์ฝ๋๋ฅผ ๋ง๋ค์ด ๋๊ฐ๋ผ๋ ๋ง์ ํ๋ ๊ฒ ๊ฐ๋ค.
3.4 ์ถฉ์ฑ์ค๋ฌ์ฐ๋ฉด์ ๋ถ๋ณ์ด๊ฑฐ๋, ์๋๋ฉด ์์์ด๊ฑฐ๋
- ์ธ์์ ๊ฐ๋ณ์ ์ด์ง๋ง ๊ทธ๋ ๋ค๊ณ ํด์ ๋ถ๋ณ๊ฐ์ฒด๋ก ์ธ์์ ๋ชจ๋ธ๋ง ํ ์ ์๋ค๋ ๊ฒ์ ์๋๋ค.
- ์ํ์ ๊ฐ๋ ์ ๋ํด ์ง๊ณ ๋์ด๊ฐ ํ์๊ฐ ์๋ค.
class WebPage { private final URI uri; WebPage(URI path) { this.uri = path; } public String content() { // HTTP GET ์์ฒญ์ ์ ์กํด์ // ์น ํ์ด์ง์ ์ปจํ ์ธ ๋ฅผ ์ฝ์ ํ // ์ฝํ์ง ์ปจํ ์ธ ๋ฅผ UTF-8 ๋ฌธ์์ด๋ก ๋ฐํํ๋ค. } }
- ๋ถ๋ณ๊ฐ์ฒด๋ฅผ ์์์ฒ๋ผ ๋์ํ๋ ๊ฒ ์ฒ๋ผ ๋ณด์ธ๋ค.
- ์ผ๋จ ํด๋์ค๋ฅผ ๋ง๋ค๊ณ ํญ์ ๊ฐ์ ๊ฐ๋ง ๋ฐํํ๊ธฐ ๋๋ฌธ์ด๋ค. ์ฆ ์์ธก์ด ๊ฐ๋ฅํจ
- ํ์ง๋ง ์ด ๊ทธ๋ฆผ์ ๋ถ์์ ํ ๊ทธ๋ฆผ์ด๋ค. ์์์ฒ๋ผ ๋์ํ๋ ๊ฐ์ฒด๋ ๋จ์ง ๋ถ๋ณ์ฑ์ ํน๋ณํ ๊ฒฝ์ฐ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
- ๋ถ๋ณ๊ฐ์ฒด๋ ๊ทธ ์ด์์ด๋ค. ๋น๋ก content() ๋ฉ์๋์ ๊ฒฐ๊ณผ๋ฅผ ์์ธกํ ์ ์๋๋ผ๋ WebPage๋ ๋ถ๋ณ ๊ฐ์ฒด์ ์ํ๋ค.
- WebPage ํด๋์ค๋ ์ค์ ์น ํ์ด์ง์ ํต์ ํ๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๋ ์ด ๊ฐ์ฒด๊ฐ ๋ฌด์์ ๋๋ ค์ค์ง ์ ์ง ๋ชปํ๋ค.
- ์ด๋ฐ ์ธก๋ฉด์์ WebPage๊ฐ String ํด๋์ค์ ๋ค๋ฅด์ง๋ง WebPage ์ญ์ String์ฒ๋ผ ๋ถ๋ณ์ด๋ค.
- ๊ฐ์ฒด์ ํ๋์ ์์ธกํ ์๋ ์์ง๋ง ๊ทธ๋๋ ์ด ๊ฐ์ฒด๋ ๋ถ๋ณ์ด๋ค. ๊ฒฐ๊ณผ๊ฐ ๋ณํ๊ธฐ ๋๋ฌธ์ ์์๋ ์๋์ง๋ง ๊ฐ์ฒด๊ฐ ๋ํํ๋ ์ํฐํฐ์ ์ถฉ์ฑํ๊ธฐ ๋๋ฌธ์ด๋ค.