๐๏ธ Java์ 10๊ฐ์ง ๋ชจ๋ฒ ์ฌ๋ก
๋ฐฑ์๋ ๊ฐ๋ฐ์๋ค์ด ๋ง์ด ์ ํํ๊ณ ๋ ๊ทธ๋งํผ ์ ๋ขฐํ๋ ์ธ์ด, Java. ๊ทธ๋ ๊ธฐ์ ๋ชจ๋ฒ ์ฌ๋ก๋ค๋ ๊ทธ๋งํผ ์ฃผ๋ชฉ ๋ฐ์ ์ ๋ฐ์ ์์ต๋๋ค. ์ด๋ฒ์๋ 10๊ฐ์ Java ๋ชจ๋ฒ ์ฌ๋ก๋ค์ ๋ฒ์ญํ ๊ธ์ ์์ฝํด๋ณด๊ฒ ์ต๋๋ค. 1๏ธโฃ SOLID ์์น์ ๋ฐ๋ฅธ๋ค. ๊ฐ์ฒด ์งํฅ ์ค๊ณ์ ์์น์ผ๋ก, ๊ฝค๋ ๋จธ๋ฆฌ์ ์๋ค์ด ์์ ์ธํฐ๋ทฐ ์ค๋น ํ ๋ ๋ง์ด๋ ์ธ์ ์ต๋๋ค ^^; ์ญ์๋ ์๊ฐ์ด ์ง๋๋ฉด ๋ค ์์ด๋ฒ๋ฆฌ๊ฒ ๋๋ค์. 2๏ธโฃ DRY & KISS DRY - ๋์ผํ ์ฝ๋๋ฅผ ๋ฐ๋ณตํ์ง ๋ง๋ผ KISS - ์ฝ๋๋ฅผ ๋๋๋ก์ด๋ฉด ๊ฐ๋จํ๊ณ ๋จ์ํ๊ฒ ๋ง๋ค์ด๋ผ 3๏ธโฃ ์ ์ ํ ๋ค์ด๋ฐ ๊ท์น์ ์ฌ์ฉ ๊ฐ์ธ์ ์ผ๋ก ์ฝ๋ ์งค ๋ ๊ฐ์ฅ ์ด๋ ต๋ค๊ณ ๋๋ผ๋ ๋ค์ด๋ฐ์ ๋๋ค. Java์์๋ CamelCase๋ฅผ ์งํฅํ๋ฉฐ ๋ค๋ฅธ ํ๋ก๊ทธ๋๋จธ๊ฐ ์ฝ๊ฒ ์ฝ๋๋ฅผ ์ฝ์ ์ ์๋๋ก ๋ค์ด๋ฐ์ ์ ์ ํ ์ง์ ํด์ผ ํฉ๋๋ค. 4๏ธโฃ ํ๋์ฝ๋ฉ STOP! ๋ณ์๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์ง์ ๊ฐ์ ์ฝ๋์ ๋ฃ๋ ๊ฒ์ ์ง์ํฉ์๋ค. ๊ธ์์๋ ๋์ด๋ฅผ ๊ณ์ฐํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ ๋, ์ฐ๋๋ฅผ ํ๋์ฝ๋ฉํ๋ ๊ฒ์ ์์๋ก ๋ค๊ณ ์์ต๋๋ค. ์ฌํด๋ ๊ด์ฐฎ์ง๋ง ๋ด๋ , ํน์ ๋ดํ๋ ์ด ๋๋ค๋ฉด...? ๐คฎ 5๏ธโฃ ์ฝ๋์ ์ฃผ์ ๋ฌ๊ธฐ 6๊ฐ์ ๋ค์ ์์ฑํ ์ฝ๋๋ฅผ ๋ค์ ๋ณด๋ฉด ๊ทธ๊ฒ์ด ์ด๋ค ์ญํ ์ ํ๋์ง, ๋๋ ์ด๋ป๊ฒ ์๋๋๋์ง ๊ธฐ์ตํ์ง ๋ชปํ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค. (์ฌ์ง์ด ์ด์ ์์ฑํ ์ฝ๋๋ง์ ) ๊ทธ๋ฌ๋ ์๊ฐ์ ๋ด์ด ๋ช ํํ๊ณ ๊ฐ๊ฒฐํ ์ค๋ช ์ ๋จ๊ธฐ๋ฉด ๋์ค์ ๊ณจ์น ์ํ ์ผ์ ๋ง์ด ์ค์ผ ์ ์๊ฒ ์ต๋๋ค. 6๏ธโฃ ๊ฐ๋ฅํ๋ฉด ํด๋์ค ๋ฉค๋ฒ๋ฅผ private์ผ๋ก ์ ์ธ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ๊ฒ์ private์ผ๋ก ์ค์ ํ๊ณ , ์ ๋์ ์ผ๋ก ๊ณต๊ฐ๋์ด์ผ ํ๋ ๋ถ๋ถ๋ง ๋ ธ์ถ๋์ด์ผ ํฉ๋๋ค. ๋ค๋ฅธ ์ฝ๋์์ ์๊ธฐ์น ์์ ๋ฐฉ์์ผ๋ก ๊ฐ์ธ ๋ณ์์ ์ ๊ทผํ์ฌ ๋ฌด์ธ๊ฐ๋ฅผ ๋ณ๊ฒฝํ๋ ์ํ์ด ์์ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. 7๏ธโฃ ๋ฌธ์์ด ์กฐ์์ ํ ๋ StringBuilder/Buffer๋ฅผ ์ฌ์ฉ String์ ๊ฐ์ฒด๋ฅผ ์์ ํ ๋๋ง๋ค ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ ๋น๋ฉ๋๋ค. ์ด๊ฒ์ ๋ถํ์ํ๊ฒ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ญ๋นํ๊ธฐ ๋๋ฌธ์ ์ง์ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ๋ฐ๋ฉด Buffer๋ฐ Builder ๊ฐ์ฒด๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ญ๋น๋์ง ์์ต๋๋ค. 8๏ธโฃ NullPointerException์ ํญ์ ์ฃผ์ ํญ์ null์ ํ์ธํ๊ณ , ๊ทธ๊ฒ์ ๋ฐฉ์งํ๊ฑฐ๋ ์ฒ๋ฆฌํ๋ ์ฌ๋ฌ ๋ฐฉ๋ฒ๋ค์ ํ์ฉํฉ์๋ค. 9๏ธโฃ ๋์์ธ ํจํด์ ์ฌ์ฉ ๋์์ธ ํจํด์ ์ ์ ํ๊ฒ ์ฌ์ฉํ๋ฉด ๋ง์ ์๊ฐ๊ณผ ๋ ธ๋ ฅ์ ์ ์ฝํ ์ ์๊ณ , ์ฝ๋๋ฅผ ๋ ์ฝ๊ธฐ ์ฝ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค. ๐ ๋น์ ์ ์ฝ๋๋ ํ ํธ์ ์ด์ผ๊ธฐ ๋น์ ์ ์ฝ๋๋ ๋ํ์ฑ ๊ณผ ๊ฐ์์ผ ํฉ๋๋ค. ์ฝ๋ ์ฌ๋์ด ์ฝ๊ฒ ์ดํดํ ์ ์๊ฒ ๋ช ํํ๊ณ ๊ฐ๊ฒฐํ๊ฒ ์ง์ฌ์ ธ์ผ ํฉ๋๋ค. ๊ฐ๋จํ๊ฒ ์งค ์ ์๋ค๋ฉด, ๋น์ ์ด ์ ์ดํดํ์ง ๋ชปํ๊ณ ์๋ ๊ฒ๋๋ค. ๐ฃ ๊ทธ๋ฌ๋ ๋ค์๊ณผ ๊ฐ์ ์ฝ๋ฉ ๊ธฐ์ ๋ค์ ๋งน๋ชฉ์ ์ผ๋ก ์ ์ฉํ์ง ๋ง์์ผ ํฉ๋๋ค. ๐ฃ ์ด๋ฅผ ์ด๊ธฐ๋ ๊ฒ์ด ๋ ์ ์ ํ ์ผ์ด๋ผ๊ณ ํ๋จํ๋ค๋ฉด(์ถฉ๋ถํ ์๊ฐํ๊ณ ), ๋ฐ๊พธ๋ ๊ฒ์ ๋๋ ค์ ํด์๋ ์๋ฉ๋๋ค.