본문 바로가기

프로그래밍/기본기ㆍ자료구조

Goto

728x90
반응형

개념

- 원하는 코드 라인으로 이동시켜주는 점프문

 

사용 방법

for (int i = 0; i < 10; i++)
{
    if (i == 5) 
    	goto jump;
}

jump:
Console.WriteLine("goto를 통해 i가 5일 때 jump: 부분으로 이동함");

 

Goto에 대하여

프로그래밍을 배울 적에 goto문을 절대 사용하지 말라고 교육 받았다.

그저 맹목적으로 '사용하지 마라'라고 교육 받아 'goto는 사용하면 안되는 것'으로 인지하고 살아왔다.

그런데 이전 팀에서 시니어경력자가 goto를 사용하는 것을 보았다.

그 시니어경력자는 내게 코드리뷰도 해주던 사람이었는데 그 사람이 goto를 사용하는 것을 보자 당황스러웠다.

그래서 goto는 왜 사용하면 안된다는 것인지 알아보기로 하고 구글링을 하였다.

구글링을 통해서 사람들이 하는 이야기는 다음과 같다.

 

부정적인 면

1. goto를 필요한 알고리즘으로 코드 작성 하는 것 자체가 코드에 문제가 있다.

(편하기 때문에 사용하다보면 스파게티코드가 될 확률이 높다는 이유)

 

2. goto는 객체지향이 대세를 이루면서 사장된 거 아닌가 싶다.

(C++이 대세를 이루기 전엔 goto를 많이 썼다고 한다. Baisc 등에서)

 

3. 조건문이나 반목문이 발전하지 않았던 시절의 잔재

 

4. 논리적이고 함수로 구조화된 C언어에서는 어울리지 않는다.

(또한 절차지향인 C언어의 특성을 무시하는 것이라고 한다)

 

긍정적인 면

1. 다중 반복문을 빠져나올 때 한번에 빠져나올 수 있다.

 

2. 어떤 개발 환경이냐에 따라 속도를 위해 사용하기도 한다.

 

3. 예외처리를 위해서 사용

('메모리 할당 중 예외발생 시 기존 할당된 메모리를 해제하기 위해' 라고 함)

 

 

//===========================================================//

//===========================================================//

 

음.. 개인적으로는 다중 반복문을 빠져나오거 외에는 goto를 쓰지 말자는 의견이다.

(특수한 개발환경 같은 예외적인 상황을 제외하고)

 

그리고 웬만하면 goto를 사용할만한 상황을 만들지 않는게 좋지 않을까 싶긴 한데

 

솔직히 정답이 없는게 프로그래밍이다보니 '무조건적으로 나쁘다'고는 생각하지 않는다.

 

 

다람쥐와 포동포동이

 

RememberCook 9월 28일 정식 출시!

두번째 게임인 RememberCook이 출시되었습니다. 귀여운 캐릭터들이 나오는 간단한 게임이며 플레이어의 공간인지능력을 테스트하는 게임입니다. 아래 링크를 통해 다운 받으실 수 있으니 많은 관��

chipmunk-plump-plump.tistory.com

반응형

'프로그래밍 > 기본기ㆍ자료구조' 카테고리의 다른 글

Boxing UnBoxing (박싱 언박싱)  (2) 2021.01.29
OSI 7계층  (0) 2021.01.28
람다식  (3) 2020.05.15
Dictionary (딕셔너리)  (0) 2020.05.14
Generic (제네릭)  (6) 2020.05.13