๋Œ€๋ถ€๋ถ„ ๊ด€์‹ฌ๋„ ์—†๋Š” goto ๋–ก๋ฐฅ ๊ธ€ ํ•˜๋‚˜ ๋” ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ ๊ฐ™์ง€๋งŒ ๋” ํ•˜๊ณ ์‹ถ์€ ์ด์•ผ๊ธฐ๊ฐ€ ์žˆ์–ด์„œ ์จ๋ด„.


๊ฒฐ๋ก ๋ถ€ํ„ฐ ๋งํ•˜์ž๋ฉด,

goto ๋ฌธ์„ ์“ฐ์ง€ ๋ง์•„์•ผํ•  ๊ฐ€์žฅ ํฐ ์ด์œ ๋Š” ๊ฐ€๋…์„ฑ(Readability) ๋ฌธ์ œ์ด๋‹ค.

ํ”„๋กœ๊ทธ๋ž˜๋ฐํ• ๋•Œ ์šฐ๋ฆฌ๋Š” ์“ฐ๊ธฐํŽธํ•œ ์ฝ”๋“œ๋ณด๋‹ค ๊ฐ€๋…์„ฑ ๋†’์€ ์ฝ”๋“œ๋ฅผ ์ƒ์‚ฐํ•ด์•ผํ•œ๋‹ค.


์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ์˜ ๋‚ด ๋จธ๋ฆฟ ์†์—๋Š” ๊ทธ์— ๊ด€๋ จ๋œ ์ •๋ณด๋“ค๋กœ ๊ฐ€๋“ํ•˜์ง€๋งŒ ํ•œ์ˆจ ์ž๊ณ ๋‚˜๋ฉด ๋‹ค ์žŠํ˜€์ง€๊ฒŒ ๋งˆ๋ จ.

์ˆ˜์ •ํ•˜๋ ค๋ฉด ๋จธ๋ฆฟ์†์— ์ด์ „์— ์ž‘์„ฑํ•˜๋˜ ์ •๋ณด๋ฅผ ์žฌ๊ตฌ์„ฑํ•ด์•ผํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค.


ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ณผ์ •์— ์“ฐ์ด๋Š” ์‹œ๊ฐ„์ด๋‚˜ ์—๋„ˆ์ง€๋ฅผ ๋น„๊ตํ•ด๋ณด๋ฉด

์ฝ”๋“œ ๊ทธ ์ž์ฒด๋ฅผ ์“ฐ๋Š” ์‹œ๊ฐ„๋ณด๋‹ค, ์ด๋ ‡๊ฒŒ ์ด๋ฏธ ์จ๋†“์€ ์ฝ”๋“œ๋ฅผ ๋จธ๋ฆฟ์†์— ๋‹ค์‹œ ์ดํ•ด์‹œํ‚ค๋Š” ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋Œ€๋ถ€๋ถ„์ž„.

๊ฐ€๋…์„ฑ์ด ๋‚ฎ์€ ์ฝ”๋“œ์ผ ์ˆ˜๋ก ๋”์šฑ ๊ทธ๋Ÿฌํ•œ๋ฐ, ํ”ํžˆ ๋งํ•˜๋Š” ์ŠคํŒŒ๊ฒŒํ‹ฐ ์ฝ”๋“œ๋ฅผ ์ƒ๊ฐํ•ด๋ณด๋ฉด ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ต์ง€ ์•Š์„ ๊ฑฐ๋‹ค.


์ด๊ฑด ํ˜ผ์ž ๊ฐœ๋ฐœํ•˜๋“  ๊ฐ™์ด ๊ฐœ๋ฐœํ•˜๋“  ๋˜‘๊ฐ™์€ ๋ฌธ์ œ.

ํ˜ผ์ž ๊ฐœ๋ฐœํ•˜๋”๋ผ๋„ ๋‚˜๋Š” ๋‚ด๊ฐ€ ๋งŒ๋“  ์ฝ”๋“œ์˜ ๋…์ž๋ผ๋Š” ์ ์ผ ์ƒ๊ฐํ•ด์•ผํ•จ.

์ฝ”๋“œ๋ฅผ ๋‹ค์‹œ ๋ณด๋”๋ผ๋„ ์ดํ•ดํ•˜๋Š”๋ฐ ์‹œ๊ฐ„์ด ์ ๊ฒŒ ๊ฑธ๋ฆด์ˆ˜๋ก ์šฐ๋ฆฌ ์ƒ์‚ฐ์„ฑ์€ ๋†’์•„์งˆ ๊ฒƒ์ด๊ณ  ๋ฒ„๊ทธ๋„ ์ค„์–ด๋“ค ๊ฒƒ์ด๊ณ  ์ถœ์‹œ๋‚ ์งœ๋ฅผ ํ•˜๋ฃจ๋ผ๋„ ๋‹น๊ธธ ์ˆ˜ ์žˆ์„๊ฑฐ๋‹ค.


goto ๋ฌธ์€ ๊ทธ๋Ÿฐ ์˜๋ฏธ์—์„œ ์“ฐ๊ธฐ์— ๋งค์šฐ ์ง๊ด€์ ์ด์ง€๋งŒ ์ฝ๊ธฐ์—๋Š” ๋งค์šฐ ๋‚œํ•ดํ•˜๋‹ค.

๋‘๊ตฐ๋ฐ ์ด์ƒ์“ฐ์ด๊ฒŒ๋˜๋ฉด ์ฝ”๋“œ๊ฐ€ ๊ธˆ๋ฐฉ ์•”ํ˜ธ๋ฌธ์œผ๋กœ ๋ฐ”๋€Œ๊ฒŒ ๋œ๋‹ค.

๋‚จ์ด ์ฝ๊ธฐ์—๋„, ๋‚ด๊ฐ€ ์ฝ๊ธฐ์—๋„ ํž˜๋“ค๊ฒŒ ๋˜๋Š”๊ฑฐ๋‹ค.


๊ทธ๋ฆฌ๊ณ  ๋Œ€๋ถ€๋ถ„์˜๊ฒฝ์šฐ goto๋ฅผ ๋Œ€์ฒดํ•  ์–ธ์–ด์˜ ๋ฌธ๋ฒ•์ ์ธ ์ง€์›์ด๋‚˜ ํ…Œํฌ๋‹‰์ด ์žˆ์œผ๋‹ˆ

์ด๋Ÿฐ ์“ฐ๊ธฐํŽธํ•œ ์ฝ”๋“œ์˜ ๋‹ฌ์ฝคํ•œ ์œ ํ˜น์„ ๋ฉ€๋ฆฌํ•˜๊ณ  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ…Œํฌ๋‹‰์„ ์ข€ ๋” ์ตํ˜€ Readability๋ฅผ ๋†’์—ฌ๋ณด๋„๋ก ํ•˜์ž.



์•„๋ž˜๋Š” ๊ฐ€๋…์„ฑ ๋†’์€ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ๋ช‡๊ฐ€์ง€ ํŒ.


1. var ์˜ ๋ชจํ˜ธ์„ฑ[C#]


var f = GetMagicNumber();

var total = 100 * f / 6;

Console .WriteLine( $"Declared Type: {total.GetType().Name} , Value: {total} " );


์œ„์™€ ๊ฐ™์€ ์ฝ”๋“œ๊ฐ€ ์žˆ์„ ๋•Œ GetMagicNumber ๊ฐ’์— ๋”ฐ๋ผ ์•„๋ž˜์™€ ๊ฐ™์ด ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ ์งˆ ์ˆ˜ ์žˆ๋‹ค.

var๋ฅผ ๋ช…ํ™•ํ•œ ํƒ€์ž…์œผ๋กœ ๋ฐ”๊พผ๋‹ค๋ฉด ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ณ  ๋ฒ„๊ทธ๋ฅผ ๋ง‰์„ ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.


Declared Type: Double, Value: 166.666666666667

Declared Type: Single, Value: 166.6667

Declared Type: Decimal, Value: 166.66666666666666666666666667

Declared Type: Int32, Value: 166

Declared Type: Int64, Value: 166



2. var ์˜ ์ ์ ˆํ•œ ์‚ฌ์šฉ[C#]


var newData = currentData;

newData += addFor;

return newData;


์œ„์™€๊ฐ™์ด ์ง€์—ญ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ ์ƒˆ๋กœ์šด ํƒ€์ž…์„ ๊ตณ์ด ์•Œ ํ•„์š”๊ฐ€ ์—†์„ ๋•Œ๋Š” var๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋…์„ฑ์ด ๋†’์„ ์ˆ˜ ์žˆ๋‹ค.



3. ๊ณผ๋„ํ•˜๊ฑฐ๋‚˜ ๋„ˆ๋ฌด ๋ป”ํ•œ ์ฃผ์„


// ๋น—์ž๋ฃจ๋ฅผ ๊ณ ์–‘์ด๋กœ ๋งŒ๋“ฌ

var temp = Magic(data);

return temp;


๋ผ๋Š” ์ฝ”๋“œ๋ฅผ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฐ”๊พธ๋ฉด ์ฃผ์„ ์—†์ด๋„ ์‰ฝ๊ฒŒ ์ฝํžˆ๊ฒŒ ๋œ๋‹ค.


var makeBroomIntoCat = Magic(data);

return makeBroomIntoCat;



4. ๋น„๊ต๋ฌธ


if (data == 10) return true;


์œ„์˜ ์ฝ”๋“œ๋Š” ์ž์นซํ•˜๋ฉด


if (data = 10) return true;


๋ผ๋Š” ์ฝ”๋“œ๋กœ ์ž˜๋ชป ํƒ€์ดํ•‘๋˜์–ด์„œ ์ปดํŒŒ์ผ๋Ÿฌ์—๋„ ์žกํžˆ์ง€ ์•Š๋Š” ๋ฒ„๊ทธ๋ฅผ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋ฅผ ์ž˜ ์ฝํžˆ๊ณ  ๋ฌธ์ œ์—†๋Š” ์ฝ”๋“œ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š”


if (10 == data) return true;


์ด๋ ‡๊ฒŒ ๋ฐ”๊ฟ”์คฌ์„๋•Œ ์œ„์˜ ์‹ค์ˆ˜๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.




๊ทธ ์™ธ์—๋„ Code conventions ๋“ฑ ๊ฐ€๋…์„ฑ์„ ๋†’์ด๊ธฐ์œ„ํ•œ ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ• ๋“ค์ด ์žˆ๋‹ค.

๋‹ค๋งŒ ๊ฐ€๋…์„ฑ์ด๋ž€ ์–ด๋А์ •๋„ ์ฃผ๊ด€์ ์ผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์Šค์Šค๋กœ ํ˜น์€ ํŒ€์›๊ณผ ๊ทœ์น™์„ ๋งŒ๋“ค์–ด ๋ณด๋Š”๊ฒƒ๋„ ์ข‹๊ฒ ๋‹ค.