* C#์
์ํ๋ ๊ฒฐ๊ณผ : ํน์ ๋ฐฉ์ ๋ค์ด์๋ฉด ๋๋คํ ์ซ์์ ๋๋ค ์ข ๋ฅ ๋ชฌ์คํฐ๊ฐ ๋ฟ ํ๊ณ ์์ฑ๋จ!
ํ์ฌ ์ํฉ : ํ ์ค ๋ชฐ๋ผ์ ๊ฒฝ์ฐ์ ์๋ณ๋ก ํ๋์ฝ๋ฉํจ
switch(Random.Next(0, 3) {
case 0:
Monster zombie01 = new();
case 1:
Monster zombie02 = new();
Monster goblin01 = new();
case 2:
Monster goblin02 = new();
Monster goblin03 = new();
Monster wyvern01 = new(); }
์ ์ฝ๋์ ๋ฌธ์ ์ : ํ๋์ฝ๋ฉ
์ํ๋ ๊ธฐ๋ฅ :
๋ฐฐ์ด List<Monster> list = { Zombie zombie, Goblin goblin, Wyvern wyvern } ์ด๊ณ
int x = Random.Next(0, 3)์ผ ๋
for ( i = 0 ; i <= x ; i++ )
{
Monster $"monster_{i}" = new typeof ( list [Random.Next(0, 3)] ) ;
}
์ด๋ ๊ฒ ํ๋ฉด ๋ ๊ฑฐ ๊ฐ๊ฑฐ๋ ?
๊ทผ๋ฐ ๊ฐ์ฒด ์ด๋ฆ ์๋ฆฌ์ $"monster_{i}" ์ด๋ ๊ฒ ๋ฃ์ ์ ์์์?
์ด ๊ฐ๋ ๋๋ก ์๋ํ ์ ์๋ ๊ธฐ๋ฅ์ด ์์๊น
๊ฐ์ฒด ์ด๋ฆ์ด ๊ผญ monster_{i}์ฌ์ผ ํ ํ์๋ ์๊ณ ์ต๋ช ์ด์ด๋ ์๊ด ์๋๋ฐ ์๊ฒน์ณ์ผ ์๋ํ ๊ฑฐ ๊ฐ์ผ๋๊น ๊ทธ๋ฅ ์ ๋ ๊ฒ ํจ
์ค๋ธ์ ํธ ์ด๋ฆ์ด ๋๋ค์ผ๋ก ์๊ฒน์น๊ฒ ์ ์์ฑ๋๊ธฐ๋ง ํ๋ฉด ๋จ
Monster์ string GetName() ๋ง๋ค๊ณ string tempName = list[x].GetName(); ํด์ ๋ถ์ด๋ฉด ๋๋? ๋ชฌ์คํฐ์ด๋ฆ์ ๊ฐ์ฒด์ด๋ฆ์ผ๋ก ๋ฃ๊ณ ์ถ๋ค๋๊ฑฐ ๋ง๋
๋ชฌ์คํฐ๋ฅผ ์ค๋ธ์ ํธ ์ด๋ฆ์ผ๋ก ํธ์ถํ ์ผ์ด ์์ด์ ๊ผญ ์ด๋ฆ์ด ์๋ค์ด๊ฐ๋ ๋จ MonstersInThisRoom[0] = new Zombie(); MonstersInThisRoom[1] = new Goblin(); MonstersInThisRoom[2] = new Wyvern(); ์๋ฌธ์ผ๋ก ์ข ๊ตฌ๊ธ๋งํด๋ณด๋๊น ๋์ถฉ ์ด๋ฐ์์ผ๋ก๋ ๋๋ค๋๊ฑฐ ๊ฐ์๋ฐ ๋ฌธ๋ฒ์ ์ผ๋ก ์ ์ดํด๊ฐ ์๋๋ค
์ ์๋ ๊ฐ์ฒด ํํ๋ฅผ ๋ถ์ฌํ๋ค๋ ๊ฑฐ์ผ? ๊ทธ๋ ๊ฒ ํ๋๊ฒ ๋ง๋๊ฑฐ๊ฐ์๋ฐ
Zombie:Monster, Goblin:Monster, Wyvern:Monster์ ์ ๋ถ Monster๋ฅผ ์์ํจ ๊ทธ๋ฆฌ๊ณ MonstersInThisRoom์ ์ ๋ ๊ฒ ๋ฐฐ์ด์ ํ ๋นํด์ new BlahBlah ํ๋ฉด ์๋ก ์์ฑ๋๋ ๊ฐ์ฒด ์ด๋ฆ์ ๋ฐ๋ก๋ฐ๋ก ์ง์ ํด์ค ํ์๊ฐ ์๋๊ฑฐ์ง?
๊บพ์ ๊ฐ ์๋๋ค MonstersInThisRoom(๊บพ์ ์ด๊ณ )Monster(๊บพ์ ๋ซ๊ณ ) ๋ผ๋ ๋ป
์น... ๊ฐ์ฒด ํํ?๋ฅผ ๊ฐ์ฒด ์ด๋ฆ์ด๋ผ๊ณ ๋งํ๊ณ ์๋ ๋ฏํ๊ตฌ๋จผ / ๋ฐ๋๊ธ์ฒ๋ผ ํ๋๊ฒ ๊ฒ์๊ฐ๋ฐ์ชฝ์ผ๋ก ๋ง๋๊ฑฐ ๊ฐ์ ใ ใ ๊ณ ์!
๋ฏธ์ ์ง์์ด ๋ถ์กฑํด์ ์ฉ์ด๊ฐ ๋ด๋ง๋๋ก์ int x๋ผ๊ณ ํ๋ฉด ๋ int๋ฅผ ํ์ ์ด๋ผ๊ณ ์ฝ๊ณ x๋ฅผ ์ด๋ฆ์ด๋ผ๊ณ ์ฝ์
๊ฐ ๋ชฌ์คํฐ ์ธ์คํด์ค ๋ฐฐ์ด๋ก ๋ง๋ค์ด์ ์ธ๋ฑ์ค๋ก ์ ๊ทผํ๊ณ ์๋ ์ฒ๋ผ ์ธ์คํด์ค ์์ name ์คํธ๋ง ๋ฃ์ด์ฃผ๋ฉด ๋ ๋ฏ
๋ต๋ณ ๋๋ฌด ๊ณ ๋ง์
๋ณ์์ด๋ฆ์ด $"monster_{i}" ๊ฐ์์์ด ๋ชฉ์ ์ด๋ฉด ์๋์ง. ์ด๊ฑธ๋ก ๋ค์์ ๋ญํ ๊ฑด๋ฐ? ์ด๋ฐ ์์ ๋ณ์์์ฒด๊ฐ ํ์์๊ฒ ๋ง๋ค์ด์ผ์ง. ์ ์ด์ ์ค์ฐ์น๋ฌธ ์์ฒด๋ ๋ฌธ์ ๊ฐ ์๋๊ฒ ๊ทธ์์์ ๋ณ์๋ค์ ์์ฑํด์ ํ ๋น์ค์ธ๋ฐ ์ด์ฐจํผ ์ค์์น๋ฌธ ๋ธ๋ฝ ๋ฐ์์ ๊ทธ ๋ณ์๋ค์ด ์์ด. ์ง์ญ๋ณ์์์.
์ค์์น ์์์ ์ง์ญ๋ณ์๋ก ๊ฐ์ฒด๋ฅผ ๋ง๋ ๋ค์ MonstersInThisRoom(์ ๋ค๋ฆญ)์ด๋ผ๋ ์คํํฑ ๋ฐฐ์ด์ ๋ด์์ ์ฐ๋๋ฐ ๊ทธ๋ถ๋ถ์ ์๋ตํ์ด์
์ผ๋จ ๋จ๋ค ๋ณต์ (๋ ์ฐธ์กฐ๋ ) ํ ๊ฒ๋ค์ ๋ด์ ์ ์ญ๋ณ์๊ฐ ํ์ํ๊ฒ ์ง. ํ ๋น์ ๋์ค์ ์๊ฐํ๊ณ ๊ฐ์ ธ์จ ๋ชฌ์คํฐ๋ค๋ก ๋ญํ ๊ฑด์ง ์จ๋ด๋ผ. ์ ์ฝ๋์ ๋ชฉ์ ์ด ์์ด์ ๋ต์ด ์๋ฏธ๊ฐ ์๋ค.
์๋ ์คํํฑ์ด ์๋๋ผ Room์ด๋ผ๋ ๊ฐ์ฒด์ ์์ฑ์ ๋ฐฐ์ด์ ๋ง๋ค์ด์ ๊ฑฐ๊ธฐ์ ๋ด์์
๊ทธ๋ผ ์ง์ญ๋ณ์๋ฅผ ๋ฃ์๊ฒ ์๋๋ผ ๊ทธ ๋ฐฐ์ด์ ๋ฐ๋ก ๋ฃ์ด์ผ์ง.
๊ทธ๋ฌ๋ $"monster_{i}" ์ด๋ด๊ฒ ํ์๊ฐ ์์. Room.myArray[i] ๋ฉด ๋์์.
๊ทผ๋ฐ์ผ๋จ ๊ทธ๋ถ๋ถ์ด ์ค์ํ๊ฑด ์๋๊ณ โ์ด๋ฆ ๋ฐ๋ก ์ ๋ง๋ค์ด์ฃผ๊ณ ๊ทธ๋ฅ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ List์ ํ๋์ฉ ํธ์ํด์ ๋ด์์ ์๋๋?โํ๋ ๊ฑฐ์๋๋ฐ ์ง๋ฌธํ๋ ๋ฐฉ๋ฒ๋ ์ ๋ชฐ๋ผ์ ๋ฒ๊ฑฐ๋กญ๊ฒ ํด๋๋ ธ๋ค์
๊ทธ Room_Array[i] = new TypeName ์ด๊ฑธ ๋ชฐ๋์ด์
์ด์ ์์์ผ๋ ์ ์ฉํด๋ด์ผ๊ฒ ๋ค์ฉ ๋์์ฃผ์ ์ ๊ณ ๋ง์์
์ฃผ์ํ ๊ฒ ์ด๋๊ฐ์๋ ์ด๋ฐ XY problem ์ง๋ฌธ์ ํ๋ฉด ์๋์.
๊ทธ๋ฐ ์ง๋ฌธ์ ํผํ๋ ค๊ณ ๋ณธ๋ฌธ ๋ง์ง๋ง์ '๊ผญ ~์ผ ํ ํ์๋ ์๊ณ ๊ฐ์ฒด๊ฐ ์ฌ๋ฌ๊ฐ ์๊ฒน์น๊ฒ ์์์ ์์ฑ๋๊ธฐ๋ง ํ๋ฉด ๋๋ค'๋ผ๊ณ ๋จ์๋ฅผ ๋ฌ์๋๋ฐ ์ญ๋ถ์กฑ์ด์๋๋ณด๋ค์ ๊ณ ๋ง์ต๋๋ค
๊ทผ๋ฐ StackOverflow๊ฐ์๋ฐ์ ์ด๋ณด์๋ค์ด ์ง๋ฌธํ๊ฑฐ ๋ณด๋ฉด ๋ค XY Problem์ด๋๋ผ๊ตฌ์ ๊ฒฐ๊ตญ ์ค๋ ฅ ์๋๋ ์ฌ๋์ ๋ต์ด ์ด๋ค์์ผ๋ก ๋์์ผ ํ๋์ง ์ต์ข ํํ๋ฅผ ๋ชจ๋ฅด๊ธฐ๋๋ฌธ์ ๊ทธ๋ฐ ์ง๋ฌธ์ ํ ์๋ฐ์ ์๋๊ฑฐ ๊ฐ์์
์ ๋ ์์ฃผ ๋น์ฝํ๊ฒ๋๋ง ์์ตํ๋ฉด์ ์ ์ด๋ถ๋ถ์ด ์ด๋ ๊ฒ ์๋๋ง ํ๋ฉด ์๋ฒฝํ๋ฐ~๋ผ๊ณ ์๊ฐํ๊ณ ๊ทธ๋ฐ๋ถ๋ถ๋ค์ ์๋ฌธ์ผ๋ก ๊ฒ์ํด ๋ณด๋ฉด ์ ๋ ๋๊ฐ์ ์ง๋ฌธ์ ํ ์ฌ๋์ด ์์ฒญ๋๊ฒ ๋ง์๋ฐ, ๋ต๋ณ์ ํ์ ํ๋ก๊ทธ๋๋จธ๋ค์ด ์จ๋์ ๋ต๋ณ์ ๋ค That's technically possible, but what a bad design it is... ๊ฐ์ ์์ด๋๋ผ๊ตฌ์ ์๋ ๋งํผ ์ง๋ฌธ๋ ์ ํ๋ ๊ฑฐ ๊ฐ์ต๋๋ค ๊ทผ๋ฐ ๊ทธ๊ฑธ ๋ชจ๋ฅด๋ ๋จ๊ณ์์๋ ์ด์ฉ ์ ์์ง์
์์ดํ ์ค ์๋ฉด ์ฑgpt์ ๋ฌผ์ด๋ด...
์ฑgpt๋ ๋๋ฌด ๋ฉ์ฒญํ๊ณ StackOverflow์ ์ํ๋๊ฒ ๋ค ์๋๋ฐ '์ข ๋ ํ๋ช ํ ๋ฐฉ๋ฒ'์ ์๋ ค์ฃผ๋ ๊ณณ์ด ์์ด์ ์ฌ๊ธฐ๋ค ๋ฌผ์ด๋ดค์ด์
StackOverflow๋ ๋๋ฌด ์ฒ์ฌ ํ์ ๊ฐ๋ฐ์๋ค๋ง ๋ต๋ณ์ ๋ฌ์์ค์ ๋ด๊ฐ ๋ฉ์ฒญํ XYํ ์ง๋ฌธ์ ํ๋ฉด ๊ทธ ๋ฉ์ฒญํ ์ง๋ฌธ์ ํด๊ฒฐํ ์ ์๋ ๋ํ ์ดํ๋ฅผ ์ ๊ณตํ๋๋ฐ, ์ ๊ฐ ์ํ๋๊ฑด ๋ํ ์ดํ๊ฐ ์๋๊ฑฐ๋ ์
์ ๊ฑฐ๋ณด๋ค ์ต์ ๋ช ๋ฐฐ๋ ์ด๋ ค์ด ์ฝ๋๋ฅผ ๋ฌผ์ด๋ด๋ ๋๋ํ๊ฒ ์ ๋๋ตํด์ฃผ๋๋ฐ? ใ ใ ใ ใ ใ ๋ ๋์์ธํจํด, ๋ฆฌํ๋ ์ ์ฝ๋ ์ ๋ถ ์ฑgpt๋ก ๋ฐฐ์ฐ๊ณ ์์;;;
์ฃ์กํ์ง๋ง ์ ๊ฐ ์ง๋ฌธ์ ์ ๋ชปํ๋๋ด์ ๊ต์ฅํ ์ ๋ค๋ฆญํ ๋๋ต๋ง ํด์ฃผ๋๋ฐ ์ํ๋ ๋ต์ด ์๋๋ค์ ์ง๋ฌธ์ด ์ข ๊ตฌ์ฒด์ ์ด๋ฉด ์ ๋๋ตํด์ฃผ๋๋ฐ ์ ๊ฐ ๊ทธ๋งํ ํ๋ก๊ทธ๋๋ฐ ์ง์์ด ์๋๋ฏ
์ ํํ ์ง๋ฌธ์ ํ๊ธฐ ์ํด์๋ ๋ต๋ณ์ ์๋ ์์ค์ ์ง์์ ๊ฐ์ง๊ณ ์์ด์ผ ํ๋ค๋ ์ ์์ ๋ฉ์ฒญ์ด์๊ฒ ์ฌ๋ฐ๋ฅธ ๊ธธ์ ์๋ ค์ฃผ๋ ์ ๋์ ์ธ ๋ต์ ๊ฒฐ๊ตญ ์กด์ฌํ์ง ์๋๋ค๋๊ฒ ๋ง๋๊ฑฐ ๊ฐ์์
"์ ๋ํฐ์์ ํน์ ๋ฐฉ์ ํ๋ ์ด์ด๊ฐ ๋ค์ด์๋ฉด ๋๋คํ ์ข ๋ฅ์ ๋ชฌ์คํฐ๊ฐ ๋๋คํ ์๋์ผ๋ก ์์ฑ๋๊ฒ ํ๊ณ ์ถ์ต๋๋ค. ์ด๋ป๊ฒ ํด์ผํ๋์?"๋ผ๊ณ ํ๊ธ๋ก ์ณ๋ ๋ตํด์ฃผ๋๋ผ.... ์ด๋ ๊ฒ ์ฑgpt์ ์ง๋ฌธํ๋๊ฒ ๋๊ฐ ์์ ์จ๋์๊ฑฐ๋ณด๋ค ์ด๋ ค์ฐ๋ฉด ๋ญ ์ด์ฉ์์๊ณ .....
ํ๊ธ๋ก ์ง๋ฌธํ๋ ๊ฒ๋ ์ ๋ชปํ๋ ๋ฏ ใ ใ
ใดใด ์ฑgptํํ ์ผ๋จ ํ๋ฒ ๋ฌผ์ด๋ณด๊ธฐ๋งํด๋ ์์ฒญ ๋นจ๋ฆฌ ๋ฐฐ์ธ ์ ์๋๋ฐ ์ ๋ชจ๋ฅด๋๊ฑฐ ๊ฐ์์ ์๋ ค์ค๊ฑฐ์, ๋ญ ๋ถํธํ๋ฉด ์ด์ฉ์ ์์ง ใ
์ฐ์ตํด์ผ๋ ๊ฑฐ ๊ฐ์
์์ด๋ก๋ ์ฝ๋๋ฆฌ๋ทฐ ํด๋ฌ๋ผ๊ณ ๋ ๋ง์ด ํด๋ด์ ๋์ ์์ฒญ ๋ฐ์๋๋ฐ ํ๊ตญ์ด๋ก ํด๋ณผ ์๊ฐ์ ์ฌ์ค ์์ ๋ชปํ๋ค๋๊ฒ ๋ง๋๊ฑฐ ๊ฐ์
์์ด ์ค๋ ฅ์ด ๋ธ๋ ค์ ์ผ์ ์ด์ ๋ณต์กํ ๊ตฌ๋ฌธ์ ์ง๋ฌธ์ ์ ๋ชปํ๋๋ฐ ๊ทธ๋ด๋ ํ๊ตญ์ด๋ผ๋ ์๋ํด๋ด์ผ๊ฒ ๋ค๊ณ ์๊ฐ์ด ๋ค์์ ์ ์๋ ๋ ๋ง์ด ๋ฒ์๊ณ ์ผ ์ ๊ฒ ํ์