ํŒ€ ๋‹จ์œ„๋กœ ๊ฐœ๋ฐœํ•˜๋‹ค ๋ณด๋ฉด ํด๋ž˜์Šค๋ช…, ๋ณ€์ˆ˜๋ช… ๋“ฑ๋“ฑ ์ฝ”๋“œ์— ์‚ฌ์šฉ๋˜๋Š” ์ด๋ฆ„์„ ์–ด๋–ป๊ฒŒ ์ง“๋Š”์ง€๊ฐ€ ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์— ์ ์ง€์•Š์€ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.


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


๋„ค์ด๋ฐ ์ปจ๋ฒค์…˜์€ ํŒ€ ๋‹จ์œ„์˜ ๊ทœ์น™์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‹น์—ฐํžˆ ํŒ€๋งˆ๋‹ค ํฌ๊ณ ์ž‘์€ ๋ถ€๋ถ„์ด ๋‹ค๋ฅธ๋ฐ, ํŒ€์—์„œ ์ฑ„ํƒํ•œ ์ปจ๋ฒค์…˜์ด ๋ณธ์ธ์ด ์จ์˜จ ๋ฐฉ์‹๊ณผ ๋‹ค๋ฅด๋”๋ผ๋„ ํ˜‘์—…์„ ์œ„ํ•ด ์ปจ๋ฒค์…˜์„ ๋”ฐ๋ฅด๋„๋ก ํ•˜์ž.


๋ณธ์ธ์ด ๊ณต๋ถ€ํ•˜๋Š” ์ž…์žฅ์ด๊ณ  ๋ณธ์ธ๋งŒ์˜ ์ปจ๋ฒค์…˜์ด ์—†๋Š” ์ƒํ™ฉ์ด๋ผ๋ฉด ์œ ๋‹ˆํ‹ฐ์™€ C#์—์„œ ์ œ์‹œํ•˜๋Š” ํ‘œ์ค€ ๋„ค์ด๋ฐ ์ปจ๋ฒค์…˜์„ ์ตํ˜€๋‘๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ํ‘œ์ค€์ธ ๋งŒํผ ๋Œ€๋ถ€๋ถ„ ์ด๋ฅผ ๊ณจ์ž๋กœ ์ ์ ˆํžˆ ๋ณ€ํ˜•์‹œํ‚จ ์ปจ๋ฒค์…˜์„ ์‚ฌ์šฉํ•˜๋ฉฐ, ์œ ๋‹ˆํ‹ฐ๋‚˜ C#์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ณต์‹ ๋ฌธ์„œ๋‚˜ ์†Œ์Šค ์ฝ”๋“œ๋Š” ๊ฑฐ์˜ ๋Œ€๋ถ€๋ถ„ ์ž๊ธฐ๋„ค๊ฐ€ ์ œ์‹œํ•œ ๋„ค์ด๋ฐ ์ปจ๋ฒค์…˜์„ ๋”ฐ๋ฅด๊ณ  ์žˆ๋‹ค.



# case์˜ ์ข…๋ฅ˜

1. PascalCase(ํŒŒ์Šค์นผ ์ผ€์ด์Šค) - ๊ฐ ๋‹จ์–ด์˜ ์ฒซ ๊ธ€์ž๋ฅผ ๋Œ€๋ฌธ์ž๋กœ, ๊ทธ ์™ธ์—๋Š” ์†Œ๋ฌธ์ž๋กœ ํ‘œ๊ธฐํ•˜๋Š” ๋ฐฉ๋ฒ•. UpperCamelCase๋ผ๊ณ ๋„ ํ•จ.

2. camelCase(์นด๋ฉœ ์ผ€์ด์Šค) - ์†Œ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋˜, ๋‘ ๋ฒˆ์งธ ๋‹จ์–ด๋ถ€ํ„ฐ๋Š” ๊ฐ ๋‹จ์–ด์˜ ์ฒซ ๊ธ€์ž๋ฅผ ๋Œ€๋ฌธ์ž๋กœ ํ‘œ๊ธฐํ•˜๋Š” ๋ฐฉ๋ฒ•. ํŒŒ์Šค์นผ ์ผ€์ด์Šค(UpperCamelCase)์™€ ๊ตฌ๋ถ„ํ•  ๋•Œ๋Š” lowerCamelCase๋กœ ์นญํ•˜๊ธฐ๋„ ํ•œ๋‹ค.

3. snake_case(์Šค๋„ค์ดํฌ ์ผ€์ด์Šค) - ๊ฐ ๋‹จ์–ด ์‚ฌ์ด๋ฅผ _(์–ธ๋”๋ฐ”)๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ํ‘œ๊ธฐํ•˜๋Š” ๋ฐฉ๋ฒ•. ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ์„ž์–ด ์“ฐ๋Š” ์œ„ ํ‘œ๊ธฐ๋ฒ•๋“ค๊ณผ ๋‹ค๋ฅด๊ฒŒ ๋ชจ๋‘ ์†Œ๋ฌธ์ž๋งŒ์„ ์‚ฌ์šฉํ•˜๋“ ์ง€ ํ˜น์€ ๋ชจ๋‘ ๋Œ€๋ฌธ์ž๋งŒ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ ์ฃผ๋œ ํ‘œ๊ธฐ๋ฒ•. ex) SNAKE_CASE, snake_case

4. kebab-case(์ผ€๋ฐฅ ์ผ€์ด์Šค) - ๊ฐ ๋‹จ์–ด ์‚ฌ์ด๋ฅผ -(ํ•˜์ดํ”ˆ)์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ํ‘œ๊ธฐํ•˜๋Š” ๋ฐฉ๋ฒ•.

5. Hungarian Notation(ํ—๊ฐ€๋ฆฌ์•ˆ ํ‘œ๊ธฐ๋ฒ•) - ๋ณ€์ˆ˜๋ช… ์•ž์— ํƒ€์ž… ๋“ฑ ๋ณ€์ˆ˜์˜ ์šฉ๋„๋‚˜ ์ž๋ฃŒํ˜• ๋“ฑ์„ ์†Œ๋ฌธ์ž ์ ‘๋‘์‚ฌ๋กœ ๋ถ™์ด๋Š” ๋ฐฉ๋ฒ•. ์žฅ์ ์— ๋น„ํ•ด ๊ฐ€๋…์„ฑ ์ €ํ•ด ๋“ฑ ๋‹จ์ ์ด ๋ถ€๊ฐ๋˜๋ฉด์„œ ์ตœ๊ทผ์—๋Š” ๋ฐฐ์ฒ™๋˜๋Š” ์ถ”์„ธ์ง€๋งŒ ์—ฌ์ „ํžˆ ํŒ€์— ๋”ฐ๋ผ ์ฑ„ํƒํ•˜๊ธฐ๋„ ํ•จ. ex) strName, iCount



# ์œ ๋‹ˆํ‹ฐ์˜ ํ‘œ์ค€ ๋„ค์ด๋ฐ ์ปจ๋ฒค์…˜

1. ํด๋ž˜์Šค๋Š” ๋ช…์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , Pascal Case๋กœ ํ‘œ๊ธฐํ•œ๋‹ค.

ex) PlayerController



2. ์ธํ„ฐํŽ˜์ด์Šค๋Š” Pascal Case๋กœ ํ‘œ๊ธฐํ•˜๊ณ , I ์ ‘๋‘์‚ฌ๋ฅผ ๋ถ™์ธ๋‹ค.

ex) IEnumerator



3. ๋ฉ”์„œ๋“œ๋Š” ๋™์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , Pascal Case๋กœ ํ‘œ๊ธฐํ•œ๋‹ค.

ex) DeleteObject, GetHp



4. ๋ณ€์ˆ˜๋ช…์—๋Š” ๋ช…์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ์•ฝ์–ด ์‚ฌ์šฉ์„ ์ง€์–‘ํ•˜๋ฉฐ ์˜๋ฏธ์žˆ๋Š” ์ด๋ฆ„์„ ์‚ฌ์šฉํ•œ๋‹ค.


์˜๋ฏธ์žˆ๋Š” ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋ผ๋Š” ๋ง์€ n, i ๋“ฑ์˜ ๋ช…๋ช…์„ ์ง€์–‘ํ•˜๊ณ  ๋ˆ„๊ฐ€ ๋ด๋„ ์ด ๋ณ€์ˆ˜์˜ ์‚ฌ์šฉ ์˜๋„์™€ ์šฉ๋„๋ฅผ ์•Œ ์ˆ˜ ์žˆ๊ฒŒ ๋ช…๋ช…ํ•˜๋ผ๋Š” ๋œป์ด๋‹ค.


๋‹ค๋งŒ for๋ฌธ์—์„œ ๋‹จ์ˆœ ๋ฐ˜๋ณต๋งŒ์„ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ๋ผ๋“ ์ง€ ์ผ๋ถ€ ์˜ˆ์™ธ๋Š” ์žˆ๋Š”๋ฐ, for๋ฌธ์—์„œ๋„ ๋ฐฐ์—ด ์ธ๋ฑ์Šค์— ์ ‘๊ทผํ•  ๋•Œ๋Š” index๋กœ ๋ช…๋ช…ํ•˜๋Š” ๋“ฑ ์œ ์˜๋ฏธํ•œ ๋ณ€์ˆ˜๋ช…์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ ์ข‹๋‹ค.



4.1. public ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์ธ ๊ฒฝ์šฐ Pascal Case๋กœ ํ‘œ๊ธฐํ•˜๊ณ , ๋˜๋„๋ก ํ”„๋กœํผํ‹ฐ(์†์„ฑ)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

ex) WalkSpeed


c#์—์„œ ํ”„๋กœํผํ‹ฐ๋Š” ํŠน์ • field(๊ฐœ๋ฐœ์ž๊ฐ€ ๋”ฐ๋กœ ์ˆ˜์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์ž๋™์œผ๋กœ backing field๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค)์— ๋Œ€ํ•œ get set ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์‹์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋ฅผ ์ง์ ‘ ํ†ตํ•˜๋Š” ๊ฒƒ์— ๋น„ํ•ด ํผํฌ๋จผ์Šค์—์„œ ์ฐจ์ด๊ฐ€ ์žˆ์„ ์ˆ˜๋Š” ์žˆ๋‹ค.


๊ทธ๋Ÿฌ๋‚˜ ์€๋‹‰์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ๋“ฑ ๋‹จ์ˆœ ๊ณต์šฉ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๊ฐ์ฒด์ง€ํ–ฅ์ ์ด๋‹ค.



4.2. private ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์ธ ๊ฒฝ์šฐ camel Case๋กœ ํ‘œ๊ธฐํ•˜๊ณ , _(์–ธ๋”๋ฐ”)๋‚˜ m_ ๋“ฑ์˜ ์ ‘๋‘์‚ฌ๋ฅผ ๋ถ™์ธ๋‹ค.

ex) _strength


์ ‘๋‘์‚ฌ๋ฅผ ๋ถ™์ด๋Š” ์ด์œ ๋Š” ์ง€์—ญ ๋ณ€์ˆ˜์™€์˜ ํ˜ผ๋™์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์ด๋‹ค.


์˜ˆ๋ฅผ ๋“ค์–ด ๋ฉ”์„œ๋“œ ๋‚ด์—์„œ strength๋ผ๋Š” ์ด๋ฆ„์˜ ์ง€์—ญ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•ด ์‚ฌ์šฉํ•ด์•ผ ํ•  ์ผ์ด ์žˆ๋Š”๋ฐ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜ ์ค‘์—๋„ strength๋ผ๋Š” ์ด๋ฆ„์˜ ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•  ๋•Œ, ํ•ด๋‹น ๋ฉ”์„œ๋“œ ๋‚ด์—์„œ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด this ํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉํ•ด ๊ฐ์ฒด์˜ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ž„์„ ๋ช…ํ™•ํ•˜๊ฒŒ ํ•ด์ค˜์•ผ ํ•˜๊ณ (this.strength), ์ฝ”๋“œ๋ฅผ ๋ฆฌ๋ทฐํ•  ๋•Œ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฒƒ์ธ์ง€ ์ง€์—ญ ๋ณ€์ˆ˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฒƒ์ธ์ง€ ํ—ท๊ฐˆ๋ฆด ์ˆ˜ ์žˆ๋‹ค.(ide์—์„œ ํ•˜์ด๋ผ์ดํŒ…์„ ํ•ด์ค€๋‹ค๊ณ ๋Š” ํ•˜์ง€๋งŒ)


์ด๋•Œ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์— ์ ‘๋‘์‚ฌ๋ฅผ ๋ถ™์—ฌ _strength๋กœ ๋ช…๋ช…ํ•œ๋‹ค๋ฉด ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค๋Š” ๊ฒƒ์„ ๋ช…ํ™•ํžˆ ์•Œ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ๋ฌผ๋ก ์ด๊ณ  ๋ฒˆ๊ฑฐ๋กญ๊ฒŒ this ํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.


์ ‘๋‘์‚ฌ๋Š” _ ๋˜๋Š” m_์ดย ๊ถŒ์žฅ๋˜๋Š”๋ฐ, ์œ ๋‹ˆํ‹ฐ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ c# ์ „๋ฐ˜์ ์œผ๋กœ m_๋ณด๋‹ค๋Š” _๋งŒ ๋ถ™์ด๋Š” ๊ฒŒ ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์œผ๋กœ ์•Œ๊ณ  ์žˆ์Œ



4.3. ์ง€์—ญ ๋ณ€์ˆ˜๋Š” camel Case๋กœ ํ‘œ๊ธฐํ•œ๋‹ค.

ex) rotateSpeed



4.4. bool ํƒ€์ž… ๋ณ€์ˆ˜๋Š” is, can, has ๋“ฑ์˜ ์ ‘๋‘์‚ฌ๋ฅผ ์‚ฌ์šฉํ•ด ํ‘œ๊ธฐํ•œ๋‹ค.

ex) isRunning, canWork, hasChildren


bool ํƒ€์ž… ๋ณ€์ˆ˜๋Š” ๊ฑฐ์˜ ๋Œ€๋ถ€๋ถ„ ํŠน์ • ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋ถ„๊ธฐํ•˜๋Š” ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š”๋ฐ, ์ด๋•Œ ์œ„์™€ ๊ฐ™์ด ๋ช…๋ช…ํ•˜๋ฉด ์šฉ๋„๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ํ•ด์ฃผ๊ณ  ๊ฐ€๋…์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚จ๋‹ค.


์˜ˆ๋ฅผ ๋“ค์–ด ๋Œ€์ƒ์ด ์ฃฝ์—ˆ๋Š”์ง€ ์•„๋‹Œ์ง€๋ฅผ ํ™•์ธํ•˜๊ณ  ์‹ถ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž.


1) if (target.DeadFlag)

2) if (target.IsDead)


๋Œ€์ถฉ ๋ด๋„ 1) ๋ณด๋‹จ 2)๊ฐ€ ๋” ๋ช…ํ™•ํ•œ ์˜๋ฏธ๋ฅผ ๊ฐ–๊ณ  ์žˆ๊ณ  ์šฉ๋„์— ๋ถ€ํ•ฉํ•˜๋Š” ๋ช…๋ช…๋ฒ•์ด๋ผ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.



5. enum์€ ๋ช…์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , Pascal Case๋กœ ํ‘œ๊ธฐํ•œ๋‹ค. ์—ด๊ฑฐํ˜•์˜ ๊ฐ ๋ฉค๋ฒ„๋„ Pascal Case๋กœ ํ‘œ๊ธฐํ•œ๋‹ค.

ex) WeaponType



# ์ฐธ๊ณ  ๋งํฌ

์œ ๋‹ˆํ‹ฐ ํ‘œ์ค€ ๋„ค์ด๋ฐ ์ปจ๋ฒค์…˜: https://unity.com/kr/how-to/naming-and-code-style-tips-c-scripting-unity

C# ํ‘œ์ค€ ๋„ค์ด๋ฐ ์ปจ๋ฒค์…˜: https://learn.microsoft.com/ko-kr/dotnet/csharp/fundamentals/coding-style/coding-conventions