์ฝ๋ ์คํ์ผ์ ๋ํ ๊ธ์ด ์ข ์ข ์ฌ๋ผ์์ ์จ๋ด
์ ๋ชฉ์ ์ข ์ด๊ทธ๋ก๊ณ ๊ทธ๋ฅ ๋ด๊ฐ ๊ฐ์ธ์ ์ผ๋ก ์ข๋ค๊ณ ์๊ฐํ๋ ๋ฐฉ๋ฒ์
ํ์ฌ ์ด๋ ํ์์ ๋ฆฌ๋ ํด๋ผ๋ก ์ผํ๊ณ ์๊ณ ์ฐ๋ฆฌํ์ ์ ์ฉ, ๊ถ์ฅํ๊ณ ์๋ ์ปจ๋ฒค์ ์
https://vmsdurano.com/c-coding-guidelines-and-practices/?
๋ณ๊ฑด ์๋๊ณ ๊ทธ๋ฅ ์ ๋งํฌ๋๋ก๋ค
๋์ถฉ ๊ฐ๊ฒฐํ๊ณ ์งง์ ๋ฌธ๋ฒ์ด ์์ผ๋ฉด ๊ทธ๊ฑธ ์ฐ์๋ ์๊ธฐ์ ๋์ฒด๋ก
๋๋ต ์์ฝํ๋ฉด
1. ?: (์ผํญ์ฐ์ฐ์)๋ฅผ ์ธ์ ์์ผ๋ฉด if-else ๋์ ์ด๋ค
2. ์ค๊ดํธ ์๋ ํ์ค์ง๋ฆฌ ๋ธ๋ญ ์์ด๋ค
3. switch expression ์ ๊ทน ์ฌ์ฉ
a = b switch
{
ย 1 => "1",
ย 2 => "2",
ย _ => ๋์ถฉ ์์ธ ๋์ง
}
4. using var๋ย IDispoable / IAsyncDisposable ๊ตฌํํ ์ ๋ค ์ฌ์ฉํ ๋ ๋ฌด์กฐ๊ฑด ์ด๋ค
5. ๋ฌธ์์ด ํฌ๋งทํ ์ด๋ ํฉ์ฑ ๋ฑ์ ์ ๋ง ๋ค๋ฅธ ๋ฐฉ๋ฒ์ด ํ์ํ ๊ฒฝ์ฐ๊ฐ ์๋๋ฉด string interpolation ๋ฐฉ์์ผ๋ก ํต์ผ
$"A: {a} / B: {b} 1+2 = {1+2}"
6. ํ์ค์ง๋ฆฌ ๋ฉ์๋๋ ํ๋กํผํฐ๋ ์ ๋ณธ๋ฌธ ์คํ์ผ๋ก ์
void Foo() => 1;
float GetPositionX => gameObject.transform.position.x;
7. ํด๋์ค ์์ฑ๊ณผ ํจ๊ป ์ด๊ธฐ๊ฐ์ ๋ฃ์ ํ์๊ฐ ์์๋
new Foo() { x = 1, y = 2, z = 3 }
8. ๊ฐ ๋๊ฐ, ์ธ๊ฐ ๋ฆฌํดํ ๋๋ ํํ ์ฌ์ฉ
๊ทธ๊ฑฐ ์ธ์๋ ๋๊ฐ, ์ธ๊ฐ์ฉ ๋ฌถ์ฌ์ ํ๋ํด์ผ ํ๋๋ฐ ๋ฐ๋ก ํด๋์ค๋ ๊ตฌ์กฐ์ฒด๋ก ๋ง๋ค๋งํผ ์ฌ๋ฌ๊ณณ์์ ์ฐ์ง ์๊ณ ๋ก์ปฌ์์ ์ฐ๋ ๊ฒฝ์ฐ์๋ ํํ ์ ๊ทน ์ฌ์ฉ
9.ย
ํด๋์ค ์ด๋ฆ, public ๋ฉ์๋, ํ๋กํผํฐ๋ PascalCase๋กย
๋ก์ปฌ ๋ณ์ ๋ฐ ๋งค๊ฐ๋ณ์ ๋ฑ์ camelCase๋ก
private ํ๋๋ _camelCase๋ก
(2021๋ ์ย ํ๊ฐ๋ฆฌ์ ์ฐ๋ ์ฌ๋ ์์ง๋ ์ข ์ข ์๋๋ฐ ๊ทนํ)
10.
์ด๋ฆ์ง์๋ ๋จ์ด ์ฌ์ด์ฌ์ด์ _ ๋ถ์ด์ง ์๊ธฐ
11.ย
๋ฉ์๋, ํ๋, ํ๋กํผํฐ ํ๋ผ์ด๋น๋ผ๋ฆฌ ํผ๋ธ๋ฆญ๋ผ๋ฆฌ ๋ชจ์๋๊ฒ
๊ทธ๋ฆฌ๊ณ ๋งํฌ์ ์๋๊ฒ๋ค์ธ๋ฐ ๊ฐ์ธ์ ์ผ๋ก ์ ํ๊ฒ๋ค์
1. float ๋ค์ f ๊ผญ ๋ถ์ด๊ธฐ
2. ์ด๋ฆ์ง์๋ ๋์ผํ ๋ฌธ๊ตฌ๊ฐ ๋ฐ๋ณต๋๋๊ฑธ ํผํ๊ธฐ
์)
class Monster
ย enum MonsterType
ย ย MonsterTypeUndead, MonsterTypeDemon
์ด๋ฌ๋ฉด Monster.MonsterType.MonsterTypeUndead ์ด๋ฐ์์ผ๋ก ์ ๊ทผํด์ผํ๋๋ฐ ๋์ Monster.Type.Undead ์ด๋ฐ์์ผ๋ก ์ด๋ฆ์ง๊ธฐ
์์ ์๋ ์ผ๋ถ๋ฌ ๋ง๋ ๊ทน๋จ์ ์ธ๊ฑฐ์ง๋ง ์ ๋๋ ์ฝํด๋ย ์ ๋ฐ๋๋์ผ๋ก ๋ง๋๋๊ฒฝ์ฐ ๋๋ฆผ
3. interface ๊ตฌํ์ ๊ฐ๊ธ์ ์์์ ๋์ ๋ช ์์ ์ผ๋กย
interface๋ฅผ public์ผ๋ก ๊ตฌํํด์ ๋ค๋ฅธ๋ฐ์ ๋ง๋๋ก ํธ์ถํ๋๊ฒ ์์ฒด๊ฐ ์ด๋๊ฐย ์ค๊ณ์ ๋ฌธ์ ๊ฐ ์์ํ๋ฅ ์ด ๋๋ค๊ณ ๋ด
4.
์์ฃผ ์ฌ์ฉ๋ ๊ฒ ๊ฐ์ ๋ฉ์๋์ ๊ฒฝ์ฐ XMLํ๊ทธ ์ฃผ์ ๊ผญ ๋ถ์ด์ย
https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/xmldoc/recommended-tags ์ฐธ์กฐ
์ธํ ๋ฆฌ์ผ์ค์ ์ฝ๋ฉํธ ํ์ค ๋จ๋๊ฒ ์์ฒญ ํธํจ
๋งํฌ์์ ์ ์ํ๊ฒ๋ค์ค์ ์ฑํํ์ง ์์๊ฒ
* extension method ์ ๊ทน ํ์ฉํ๊ธฐ
์ด๊ฑฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ง๋๋ ์ ์ฅ์์ ์ข์์ง๋ ๋ชจ๋ฅด๊ฒ ๋๋ฐ ํด๋ผ ๋ก์ง์ extension method ๋จ์ฉํ๋ฉด ์ ํ์ ์ธ '๋๋ง์๋์ฝ๋' ๋ ํ๋ฅ ์ด ๋๋ค๊ณ ๋ด์ ๊ฑฐ๋ฆ
* null propagation ์ ๊ทน ํ์ฉ
์ด๊ฑฐ ์ง์ง ์ข์๋ฐ.. ์ด๊ฑฐ๋ ์์ง ๊ณ ๋ฏผ์ค์. ํธํ๊ธด ํ๋ฐ ๊ตณ์ด ์ฐ์ง ๋ง๋ผ๋๊ฑฐ ์ฐ๊ธฐ๋ ์ข ๊ทธ๋ ๊ณ
UnityObject ๊ฐ ์๋์ ๋ค์ ํํด์ ํ์ฉํ๋ค๊ณ ํ๋ฉด ์ฌ๋๋ค์ด 100% ํท๊ฐ๋ คํ๊ณ
๊ฐ๊ธ์ ์ค๋ธ์ ํธ๋ค์ด ์ง์ ๋ ํผ๋ฐ์ค๋ฅผ ๋ค๊ณ ์์ง ์๊ณ ์ด๋ฒคํธ๋ก ํต์ ํ๋ ์์ผ๋ก ์์คํ ์ ์ค๊ณํด์ ๋์ฒดํฌ์ ํ์์ฑ ์์ฒด๋ฅผ ์ค์ด๋ ค๊ณ ๋ ธ๋ ฅ ์ค.
is null ๋ ๋ง์ฐฌ๊ฐ์ง ๋ฌธ์ ๊ฐ ์์. ์ฌ๋๋ง๋ค null = A๋ A = null ํผ์ฉํ๋๊ฑฐ ํต์ผํ๊ณ ์ถ์๋ฐ ๋ถ์์ฉ์ด ๊ฑฑ์ ๋จ
๋ ๋ญ๊ฐ์๋๋ผ.. ์ผ๋จ ์๊ฐ๋๋๊ฑด ์ด์ ๋์ธ๋ฏ
ย
๊ทผ๋ฐ ์ด๋ฆ์ง์๋ ๋จ์ด ์ฌ์ด์ฌ์ด์ _ ๋ถ์ด์ง ์๊ธฐ <= ์ด๊ฑด ์ ๊ทธ๋ฐ๊ฑฐ์ผ?? ๊ฐ์๊ธฐ ๊ถ๊ธ...์ฑ๋ฅ์ ๋ฌธ์ ๋ผ๋?
๊ฑ ๋ท๋ท ํ๋ ์์์์ ์ฐ๋ ์ด๋ฆ๊ท์น์ด๋ ์ ์ฌํ๊ฒ ๋ง์ถ๊ฑฐ์ ๋ท๋ท์์ _ ์์ฐ์์
๋ณ์๋ช ์ ์ฑ๋ฅ์ ์ ํ ์ํฅ์ ๋ผ์น์ง ์์.
์ค ใณ
10๋ฒ ๊ฐ๋ง์ด์ฐ๋๋ฐ ์ฐ๋ค๋ณด๋ ๋ณด๊ธฐ์์ข๊ธดํ๋๋ผ
11๋ฒ ๋๋ฌด ๊ท์ฐฎ์ ์๋์ผ๋ก ํฌ๋งทํ ๋๋ ๊ธฐ๋ฅ ์ ๋
๋ผ์ด๋ ํ๋ฌ๊ทธ์ธ์ค์ ์๋ค๊ณ ๋ ๋ค์์. vs๋ vscode์์๋ ์๋์ง๋ ๋ชจ๋ฅด๊ฒ ๋ค ์ฐ๋ฆฐ ๊ทธ๋ฅ vs community๋ก ํต์ผํด์..
์ ๋๋ ๊ฑฐ์ ๋๊ฐ๋ค
๋ง์ง๋ง์ ์ ๋ํฐ ์ค๋ธ์ ํธ๋ฅผ ํ๊ดดํ๋ ํ์ด๋ฐ๋ง ์ ์ปจํธ๋กคํ๋ฉด ํฐ ๋ฌธ์ ์๋ค๊ณ ๋ด์ ์ ๋ ์ฐ๋ ํธ์ ๋๋ค
๋๋ ๋ด ๊ฐ์ธ์์ ์์ ๋ง์๊ป ์ฐ๋ ํธ์ธ๋ฐ ๋ ์ฌ๋์ ๋ชป๋ฏฟ์ด์ ใ ใ ใ ์์ง๋ ๊ณ ๋ฏผ์ค์.
์ธ์คํํฐ์ ๋ ธ์ถ์ํฌ ๋ณ์ public๋ง๊ณ [SerializeField] private๋ก ํ๋ ๋ด์ฉ๋ ์ถ๊ฐํ๋ฉด ์ข์๊ฑฐ ๊ฐ์์
์ ๋ง๋ค ์ฐ๋ฆฌ๋ ๊ทธ๋ถ๋ถ์ ๊ทธ๋ ๊ฒ ํ๊ณ ์์ ใ ใ ๋ค๋ค ์๊ฐํ๋๊ฒ ๋น์ทํ๋ฏ
2๋ฒ๋งจ๋ ํ์ค์ง๋ฆฌ ํด๋๊ณ ๊ฒฐ๊ตญ ์ถ๊ฐํ๋ค๋ณด๋ฉด ์ค๊ดํธ ์ฐ๊ฒ๋จ
null๋ null propagation๋ ์ ๋ฐ์ข ์ฐ์ง๋ง ์ต์คํ ์ ๋ง์ด์ ๋๋จธ์ง๋ ๋น์ทํจ
2๋ฒ์ ๋ญ์๋ฆฌ์? ํ์ค์ง๋ฆฌ๋ ์ค๊ดํธ ์ฐ๋๊ฑฐ์?
ใ ใ
์กฐ๊ฑด์ && || ์กด๋๋ถ์ด๋ ์ผํญ์?
๋ 95%๋ ์ ์งํค๊ณ ์์๋ค... ๋์ค์ ๋ฐ๋ก ๊ณต๋ถ ์ข ํด๋์ผ๊ฒ ๋ค. ใ ใ
10๋ฒ์ ์ ์ผ๋ฉด ๊ด์ฐฎ์๋ฐ ๋ง์์ง๋ฉด ์ญํจ๊ณผ๋๋ผ
๋ฌด์กฐ๊ฑด ๊ฐ์ถ
์ข๋๊ฒ ๋ณ์ ๋ฐฑ์์๋ผ๋ค์ด ์ฝ๋ฉ์ปจ๋ฒค์ ์ ๊ฒฝ์ฐ๊ธฐ๋ ํ๋
ํ์ ํผ์ ์๊ธฐ๋ง์กฑ๋ธ๋ธ์ด๋ ํ ๊ป๋ฐ ์ ๊ฒฝ์ฐ์ง๋ง๊ณ ์ข๋๋ก ํด ใ ใ ใ
์ด๊ฑฐ ๊ฐ๋ณ์ ์ ์์... ์ฝ๋ ์งง๊ฒ ์ฐ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ ์์ผ ๋ฟ์ด์ง ์ด๊ฑธ ์ค์๊ธฐ์ ์ด์ ํํ๋ก์ ํธ ํ์ ์ฝ๋ฉ ์คํ ๋ค๋๋ก ๋ฐ๋๊ณณ์ ํผํด๋ผ ;;
์ด๊ฑฐ ๋ด์๋ผ๋ค ๋ฐฉ๊ตฌ์ ์ฝ๋ฉ