source

PHP의 GOTO는 나쁜가요?

factcode 2022. 9. 27. 23:47
반응형

PHP의 GOTO는 나쁜가요?

PHP이 PHP 5.3이라는 되었습니다.GOTO그런데 .GOTO 과연 흥미로운지 알고 GOTO쁜쁜코 ?드 ?? ????

조립기에서 프로그래밍을 하고 있지 않는 한 GOTO는 항상 비행기의 구명조끼와 같은 취급을 받아야 한다.사용할 수 있는 것은 좋지만 사용할 필요가 있으면 곤란하다.

아무도 이 글을 올리지 않았다니 믿을 수 없어:)

xkcd - goto (고토)

인정합니다. PHP는 컴파일되지 않습니다...아마 그 강간범이 당신의 웹사이트를 방문할 때마다 당신을 쫓아다닐지도 몰라요.

코드 구조가 나쁘면 사용하는 제어 구조에 관계없이 나쁜 것입니다.

나는 간접적으로 코드의 같은 분기를 발생시키는 "control variables"와 "if"를 중첩하는 것보다 프로그램의 흐름을 명확하게 하는 goto를 개인적으로 선호한다.

두 가지 버전(GOTO 포함 및 없음)을 작성하여 어떤 버전을 더 쉽게 이해할 수 있는지 확인하십시오.그럼 선택은 쉬워요.

이것이 PHP 매뉴얼 페이지의 가장 중요한 부분이며, 여기에 없습니다.

이것은 완전히 제한되지 않은 것은 아니다.대상 라벨은 동일한 파일 및 컨텍스트 내에 있어야 합니다.즉, 함수 또는 메서드에서 점프할 수도 없고 점프할 수도 없습니다.루프나 스위치 구조에 뛰어들 수도 없습니다.여기서 뛰어내릴 수 있습니다.일반적으로 다단계 브레이크 대신 goto를 사용합니다.

IMHO 이것은 Ye BASIC 스타일의 gotos와는 매우 다른 것입니다.

저는 (현재) 소수이지만, PHP의 goto constructure에 가해진 제한이 매우 유익한 툴이라고 생각합니다.

http://adamjonrichardson.com/2012/02/06/long-live-the-goto-statement/

실제로 화살표 코드(깊이 중첩된 조건)의 예를 살펴보고, 한 버전에서는 표준 프랙티스(가드구, 그룹화 조건, 추출 함수)를 사용하여 리팩터링하며, 다른 버전에서는 goto 기반의 리팩터링을 선호합니다.

총은 사악해?둘 다 선과 악을 위해 사용될 수 있다.goto 없이 좋은 코드를 쓰는 게 더 쉬웠을 것 같아요.

주어진 상황에서 코드를 더 읽기 쉽게 만드는 언어 기능은 A Good Thing입니다. GOTO는 그러한 상황이 드물어도 그러한 언어 기능 중 하나입니다.서투른 프로그래머가 불량하고 유지보수가 불가능한 코드를 작성하는 것을 가능하게 하는 구문을 금지한다면 우리의 일은 훨씬 더 어려워질 것입니다.

소프트웨어 엔지니어로서 저는 주로 '메인프레임'과 '대기업 서버'에서 일하고 있습니다.일상 언어(기본 코드의 95%에 해당하는 언어)는 코볼로 GOTO를 광범위하게 사용합니다.

이 사용법이 코드가 나쁘다는 의미는 아닙니다.프로그램 작성 시점에서는 이 툴(GOTO)이 올바른 툴이었다는 것을 의미합니다.

Kaitsuli의 질문에 답하자면, PHP 스크립트를 작성할 때 유용한 도구가 될 수 있다고 생각합니다.반면에, 지금까지 거의 10년 동안 많은 대본들이 그것 없이 이루어졌습니다.게다가 오브젝트 지향적인 기능을 갖춘 PHP의 진화에도 어긋납니다.

IMHO, 코드가 만들어지는 것은 좋지도 나쁘지도 않다: 좋은 프로그램은 여전히 좋고 "공포 프로그램"은 더 나빠질 것이다.유일한 질문은 "왜 GOTO가 필요하지 않다는 것을 증명한 지 10년이 지난 후에 GOTO를 추가하는가?"이다.

GOTO는 구조화되지 않은 코드를 만들 수 있기 때문에 보통 사악합니다.일반적인 루프를 사용하면 구조화되어 있기 때문에 따라하기 쉬운 좋은 구조화된 코드를 만들 수 있습니다.

구조화되지 않은 코드가 이곳저곳으로 이동하면 GOTO 스테이트먼트에서 나오는 악마를 발견하게 됩니다.거의 항상 피하는 것이 좋다.아마 10만 줄마다 GOTO 문장이 많은 LOT를 간략화하는 곳이 있을 것입니다.따라서 코드가 나쁜 것은 아니지만 잘 모르겠다면 GOTO를 피하는 것이 좋습니다.

이게 도움이 됐으면 좋겠다.

편집: 여기서 제 의견을 덧붙이자면, 구조화되지 않은 코드를 만들 수 있는 다른 명령들이 있습니다. 그리고 제가 생각하기에 그렇게 해야 할 때는 악하지 않은 것으로 여겨지지 않습니다.

예를 들어 함수의 중간 복귀는 함수의 끝에 대한 GOTO이기 때문에 나는 그것들을 피하고 각 함수의 끝부분에서 1개의 복귀만을 사용한다.

Vb 같은 다른 언어들.Net(다른 기업도 마찬가지일 수 있음)은 Exit For, Exit While, Exit While, Break 등의 작업을 수행할 수 있습니다.이러한 작업은 코드 구조를 해제하는 것도 피해야 한다고 생각합니다.

때로는 (즉, 0.01%의 경우) 긴 스크립트가 있어 블록을 테스트하고 싶을 때 등에 도움이 됩니다.그러나 최종 스크립트에 보관하지 않습니다.

CLI 모드에서 작업하기 위한 스크립트를 작성할 때 GOTO를 사용했습니다.그게 내 목숨을 구했어

언급URL : https://stackoverflow.com/questions/1900017/is-goto-in-php-evil

반응형