Community

๐Ÿ•Š๏ธ ์Šคํ”„๋ง ๋ถ€ํŠธ์˜ ํ‘œ์ค€ ์ฝ”๋”ฉ์„ ๋”ฐ๋ฅด๋Š” ๋ฒ•

๐Ÿ“Œ ์ ์ ˆํ•œ ํŒจํ‚ค์ง• ์˜๋ฏธ ์žˆ๋Š” ํŒจํ‚ค์ง•์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์ปจํŠธ๋กค๋Ÿฌ, ์„œ๋น„์Šค, ์œ ํ‹ธ ํด๋ž˜์Šค๋ฅผ ๊ฐ๊ฐ ๋ณ„๋„์˜ ํŒจํ‚ค์ง€์— ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๊ทœ๋ชจ ์„œ๋น„์Šค์˜ ๊ฒฝ์šฐ, ๋„๋ฉ”์ธ ๊ธฐ๋ฐ˜์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ“Œ ๋””์ž์ธ ํŒจํ„ด ์‚ฌ์šฉ ๐Ÿ“Œ ์Šคํ”„๋ง ๋ถ€ํŠธ ์Šคํƒ€ํ„ฐ ์‚ฌ์šฉ ๐Ÿ“Œ ์ ์ ˆํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฒ„์ „ ์‚ฌ์šฉ ๐Ÿ“Œ 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 ๋ฒ„๊ทธ์™€ ์ฝ”๋“œ ํ’ˆ์งˆ ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋งค์šฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์•Œ๋ฆผ

์•Œ๋ฆผ์ด ์—†์Šต๋‹ˆ๋‹ค