๐๏ธ ์คํ๋ง ๋ถํธ์ ํ์ค ์ฝ๋ฉ์ ๋ฐ๋ฅด๋ ๋ฒ
๐ ์ ์ ํ ํจํค์ง ์๋ฏธ ์๋ ํจํค์ง์ผ๋ก ํ๋ก๊ทธ๋จ์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ๋ชจ๋ ์ปจํธ๋กค๋ฌ, ์๋น์ค, ์ ํธ ํด๋์ค๋ฅผ ๊ฐ๊ฐ ๋ณ๋์ ํจํค์ง์ ํฌํจํฉ๋๋ค. ๋๊ท๋ชจ ์๋น์ค์ ๊ฒฝ์ฐ, ๋๋ฉ์ธ ๊ธฐ๋ฐ์ผ๋ก ๋๋ ์ ์์ต๋๋ค. ๐ ๋์์ธ ํจํด ์ฌ์ฉ ๐ ์คํ๋ง ๋ถํธ ์คํํฐ ์ฌ์ฉ ๐ ์ ์ ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฒ์ ์ฌ์ฉ ๐ Lombok ์ฌ์ฉ ๐ Lombok์ ์ด์ฉํ ์์ฑ์ ์ฃผ์ final ํค์๋์ @RequiredArgsConstructor๋ฅผ ์ฌ์ฉํ์ฌ ์์กด์ฑ์ ์ฃผ์ ํฉ๋๋ค. ๐ slf4j ๋ก๊น System.out.println() ์ฌ์ฉํ์ง ์๊ธฐ๋ก ํฉ๋๋ค. ๐ ๋ผ์ฐํ ์ ์ํด์๋ง ์ปจํธ๋กค๋ฌ ์ฌ์ฉ ๐ ๋น์ฆ๋์ค ๋ก์ง์ ์ํด์๋ง ์๋น์ค ์ฌ์ฉ ๐ NPE ํผํ๊ธฐ ๐ ํ๋ ์์ํฌ์ ๊ณตํต ๋ชจ๋ฒ ์ฌ๋ก - data set์ ์ ์ ํ ์ปฌ๋ ์ ์ฌ์ฉ - for๋ฌธ ๋์ forEach๋ฌธ ์ฌ์ฉ - ์ธํฐํ์ด์ค ์ฌ์ฉ - ๊ฐ๋ ์ฑ์ ์ํด size()๋์ isEmpty()์ฌ์ฉ - null ๊ฐ์ ๋ฐํํ์ง ์๊ธฐ, ๋์ ๋น ์ปฌ๋ ์ ๋ฐํ ๐ pagination ์ฌ์ฉ ๐ caching ์ฌ์ฉ ๐ custom exception handler ์ฌ์ฉ @ControllerAdvice๋ฅผ ์ฌ์ฉํ์ฌ exception handler๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ๐ custom response object ์ฌ์ฉ ๐ ํ์ํ์ง ์์ ์ฝ๋, ๋ณ์, ๋ฉ์๋, ํด๋์ค ์ ๊ฑฐ ๐ ์ฃผ์ ๋ชจ๋ ๊ฒ์ ์ฃผ์์ ๋ฌ์ง๋ ๋ง๊ธฐ. ๋์ ์ ํด๋์ค, ๋ฉ์๋, ๋ณ์ ๋ฑ์ ๋ํ ์๋ฏธ ์๋ ๋ค์ด๋ฐ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๐ ์๋ฏธ์๋ ๋ค์ด๋ฐ ๐ ์ ์ธ์ ์ ์ ํ ๋์๋ฌธ์ ์ฌ์ฉ ํด๋์ค - PascalCase ๋ฉ์๋&๋ณ์ - camelCase ์์ - SCREAMING_SNAKE_CASE DB ๊ด๋ จ ํ๋ - snake_case ๐ ๋จ์ํ๊ฒ ํญ์ ๊ฐ๋จํ๊ฒ ์ฝ์ ์ ์๋ ์ฝ๋๋ฅผ ์์ฑํ๋๋ก ํฉ๋๋ค. ๐ ๊ณตํต ์ฝ๋ ์คํ์ผ ์ฌ์ฉ ๐ SonarLint ๋ฒ๊ทธ์ ์ฝ๋ ํ์ง ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ๋งค์ฐ ์ ์ฉํฉ๋๋ค.