๐Ÿ”€์ฝ”๋”ฉ ์ผ€์ด์Šค ๋ณ€ํ™˜๊ธฐ

ํ…์ŠคํŠธ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด camelCase, snake_case, PascalCase ๋“ฑ ๋‹ค์–‘ํ•œ ์ฝ”๋”ฉ ๋„ค์ด๋ฐ ์ปจ๋ฒค์…˜์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๋ณ€ํ™˜ ๊ฒฐ๊ณผ

์ผ€์ด์Šค ์œ ํ˜•๊ฒฐ๊ณผ

์ฝ”๋”ฉ ์ผ€์ด์Šค ๋ณ€ํ™˜ โ€” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋„ค์ด๋ฐ ์ปจ๋ฒค์…˜ ์™„๋ฒฝ ๊ฐ€์ด๋“œ

์ฝ”๋”ฉ์—์„œ ๋„ค์ด๋ฐ ์ปจ๋ฒค์…˜์€ ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๊ณผ ์ผ๊ด€์„ฑ์„ ์œ„ํ•ด ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์™€ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๊ถŒ์žฅํ•˜๋Š” ์ผ€์ด์Šค ์Šคํƒ€์ผ์ด ์žˆ์œผ๋ฉฐ, ํŒ€ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๋™์ผํ•œ ์ปจ๋ฒค์…˜์„ ๋”ฐ๋ฅด๋Š” ๊ฒƒ์ด ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค. ์ด ๋„๊ตฌ๋Š” ํ…์ŠคํŠธ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด 5๊ฐ€์ง€ ์ฃผ์š” ์ฝ”๋”ฉ ์ผ€์ด์Šค ํ˜•์‹์œผ๋กœ ์ฆ‰์‹œ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ผ€์ด์Šค๋ณ„ ์ฃผ์š” ์‚ฌ์šฉ์ฒ˜:
camelCase: JavaScript/TypeScript ๋ณ€์ˆ˜, ํ•จ์ˆ˜๋ช…
PascalCase: ํด๋ž˜์Šค๋ช…, React ์ปดํฌ๋„ŒํŠธ, TypeScript ์ธํ„ฐํŽ˜์ด์Šค
snake_case: Python ๋ณ€์ˆ˜/ํ•จ์ˆ˜, Ruby, SQL ์ปฌ๋Ÿผ๋ช…
kebab-case: CSS ํด๋ž˜์Šค, HTML ์†์„ฑ, URL ์Šฌ๋Ÿฌ๊ทธ
SCREAMING_SNAKE_CASE: ์ƒ์ˆ˜, ํ™˜๊ฒฝ ๋ณ€์ˆ˜(.env)
flatcase: ์ผ๋ถ€ ํŒจํ‚ค์ง€๋ช…, ํŒŒ์ผ๋ช… (์†Œ๋ฌธ์ž ์—ฐ์†)

์ž…๋ ฅ ํ…์ŠคํŠธ๋Š” ๊ณต๋ฐฑ, ์–ธ๋”์Šค์ฝ”์–ด, ํ•˜์ดํ”ˆ, ๋Œ€๋ฌธ์ž ๊ฒฝ๊ณ„ ๋“ฑ ๋‹ค์–‘ํ•œ ๊ตฌ๋ถ„์ž๋ฅผ ์ž๋™์œผ๋กœ ์ธ์‹ํ•˜์—ฌ ๋‹จ์–ด๋ฅผ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด "myVariableName", "my_variable_name", "my-variable-name" ๋ชจ๋‘ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํŒŒ์‹ฑ๋ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๋‹จ์–ด๋ฅผ ํ•œ ๋ฒˆ์— ๋ณ€ํ™˜ํ•˜๋ ค๋ฉด ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ์ž…๋ ฅํ•˜์„ธ์š”.

์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ (FAQ)

Q: JavaScript์—์„œ camelCase์™€ PascalCase๋ฅผ ์–ธ์ œ ๊ตฌ๋ถ„ํ•ด ์‚ฌ์šฉํ•˜๋‚˜์š”?

A: JavaScript์—์„œ ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜๋Š” camelCase(์˜ˆ: getUserName), ์ƒ์„ฑ์ž ํ•จ์ˆ˜์™€ ํด๋ž˜์Šค๋Š” PascalCase(์˜ˆ: UserProfile)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํ‘œ์ค€ ์ปจ๋ฒค์…˜์ž…๋‹ˆ๋‹ค. React ์ปดํฌ๋„ŒํŠธ ํŒŒ์ผ๋ช…๊ณผ ์ปดํฌ๋„ŒํŠธ ์ž์ฒด๋Š” PascalCase๋ฅผ ์”๋‹ˆ๋‹ค. ์ƒ์ˆ˜๋Š” SCREAMING_SNAKE_CASE๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, CSS ๋ชจ๋“ˆ์ด๋‚˜ ํŒŒ์ผ๋ช…์€ kebab-case๋ฅผ ์„ ํ˜ธํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.

Q: Go ์–ธ์–ด๋Š” ์–ด๋–ค ์ผ€์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋‚˜์š”?

A: Go๋Š” ๋…ํŠนํ•œ ์ปจ๋ฒค์…˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ณต๊ฐœ(exported) ์‹๋ณ„์ž๋Š” PascalCase, ๋น„๊ณต๊ฐœ(unexported) ์‹๋ณ„์ž๋Š” camelCase๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. snake_case๋‚˜ kebab-case๋Š” Go์—์„œ ๊ฑฐ์˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€๋ช…์€ ์†Œ๋ฌธ์ž ๋‹จ์ผ ๋‹จ์–ด(flatcase)๊ฐ€ ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค.

Q: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ปฌ๋Ÿผ๋ช…์—๋Š” ์–ด๋–ค ์ผ€์ด์Šค๊ฐ€ ์ข‹๋‚˜์š”?

A: SQL ํ‘œ์ค€๊ณผ ๋Œ€๋ถ€๋ถ„์˜ RDBMS์—์„œ๋Š” snake_case๊ฐ€ ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค(์˜ˆ: user_id, created_at). PostgreSQL, MySQL ๋ชจ๋‘ snake_case๋ฅผ ๊ด€๋ก€๋กœ ๋”ฐ๋ฅด๋ฉฐ, camelCase ์ปฌ๋Ÿผ๋ช…์€ ์ฟผ๋ฆฌ ์‹œ ๋”ฐ์˜ดํ‘œ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•ด ๋ถˆํŽธํ•ฉ๋‹ˆ๋‹ค. Prisma, Sequelize ๋“ฑ ORM์€ snake_case DB ์ปฌ๋Ÿผ์„ camelCase ์†์„ฑ์œผ๋กœ ์ž๋™ ๋งคํ•‘ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.