나는 "스파게티"를 많이 보았으며 단지 이 스파게티 코드이고 무엇이 이 아니며이 아닌지에 대한 명확한 설명을 원합니다. 그냥 내가하지 않기 때문에.스파게티 PHP의 정의?
PHP에서 참조하는 것이 내가 선택한 언어이므로 도움이됩니다.
나는 "스파게티"를 많이 보았으며 단지 이 스파게티 코드이고 무엇이 이 아니며이 아닌지에 대한 명확한 설명을 원합니다. 그냥 내가하지 않기 때문에.스파게티 PHP의 정의?
PHP에서 참조하는 것이 내가 선택한 언어이므로 도움이됩니다.
"스파게티 코드"라는 용어는 PHP에만 해당되는 것이 아니며 모든 프로그래밍 언어에 적용되며 대부분의 언어 (최소한 동일한 패러다임)에서 매우 유사해야합니다. 어쩌면 당신은 이것을 이해할 것이며 PHP에서 예제를 원할 것입니다.
이 주제에 Wikipedia article
꽤 명확한 것 같다스파게티 코드가 복잡한 을 가지고 있으며, 제어 구조를 얽힌 소스 코드, 많은 GOTOs, 예외를 사용하여 특히 하나의 스레드에 대한 경멸적인 용어 입니다 , 또는 기타 "구조화되지 않은"분기 구조. 프로그램 흐름이 은 스파게티의 그릇처럼 보이기 쉽기 때문에 이름이 지정됩니다. 즉, 뒤틀리고 꼬인 것입니다. 스파게티 코드는 전문가가 아닌 경험이 풍부한 프로그래머와 주기 동안 계속 수정 된 복잡한 프로그램이 포함 된 여러 가지 요인으로 인해 발생할 수 있습니다. 구조화 프로그래밍이 크게 스파이크의 발생을 감소 코드입니다.
이 포럼 스레드는 Top 100 Signs That I Am Writing Spaghetti Code in PHP이며 특히 PHP와 관련되어있어 유용 할 수 있습니다.
여기는 spaghetti code의 꽤 괜찮은 정의입니다.
과도하게 복잡하고 구조가 어려우며 따르기가 쉽지 않고 일관성이없고 부작용 (특히 전역 부작용) 또는 일부 조합에 의존하는 코드를 설명하는 데 사용되는 주관적인 용어입니다.
PHP는 대부분의 스크립트 언어와 마찬가지로 느슨하게 입력됩니다. 변수를 사용하기 전에 변수를 선언 할 필요가 없습니다. 많은 변수가 "전역"범위에서 사용되며 암시 적으로 (자동 로딩) 파일을 포함하는 규정이 있습니다. 이들 중 어느 것도 나쁜 기능이지만, 심하게 사용되어 스파게티 코드로 쉽게 이어질 수 있습니다.
+1 변수 및 환경 조건. 그것은 나에게 파스타의 큰 사발처럼 항상 보인다. – person27
스파게티 코드는 다른 개발자가 작성한 것입니다. 귀하의 코드는 결코 스파게티 코드가 아닙니다.
스파게티 코드의 classical definition은 "구조화되지 않은 분기의 사용으로 인해 제어 흐름이 따르기 어려운 코드"입니다. PHP 이후로 1970 년대부터 발명 된 대부분의 언어가 GOTO를 지원하지 않기 때문에 이론적으로는 스파게티 코드를 작성할 수 없습니다. (업데이트 : 5.3 이후 PHP는 goto 문을 가지고 있지만 여전히 파괴적인 잠재력은 제한적입니다)
그러나 전역 변수를 자유롭게 사용하는 긴 스크립트와 함수로 좋은 근사값을 얻을 수 있습니다. 보너스 포인트가 deeply nested if/elseif/else cascades이고 형식이 잘못되었습니다. HTML을 생성하는 HTML, JavaScript, PHP, PHP, 그리고 PHP which generates JavaScript which generates HTML을 추가하여 코드를 작성한 사람조차도 누구도 코드를 이해할 수 없도록해야합니다.
5.3.0 현재 PHP에는 Gotos가 포함되어 있습니다. – mjsa
@mjsa : 음, 적어도 제한된 것입니다. –
잘 작성된 코드에서는 처음부터 끝까지뿐만 아니라 끝에서부터 시작까지 흐름을 명확하게 따라갈 수 있어야합니다 (치명적인 오류 조건이없는 경우 핸들러에 역 추적 출력이 있어야 함). 모든 기능에 대해 하나의 출입구 규칙을 따르십시오.
스파게티 코드를 피하는 한 가지 방법은 return 문이 함수에 작성한 마지막 내용이고 그보다 더 일찍 돌아올 수 없는지 확인하는 것입니다.
함수가 예기치 않은 값을 반환하면 코드를 정리하면 return 문에서 시작하여 뒤로 이동하여 값이있는 곳을 확인할 수 있습니다. 그러나 코드가 스파게티라면 약 절반의 시간 동안 함수의 중간에 묻혀있는 두 번째 return 문을 우연히 발견 할 때까지 함수가 그 값을 반환하는 방법에 대해 의아하게 시간을 낭비하게됩니다.
저는 Cletus와 Andomar의 주장에 동의하지 않습니다. 이는 모두 주관적입니다. 함수의 중간에 return 문이 명확히 스파게티 코드입니다.
마이클 Borgwardt, 어떤 이유로 고토를 들어 는 PHP 5.3에 추가되었습니다 http://us2.php.net/goto
나는이 추가 된 이유 좋은 이유를 보지 못했다. 나는 그것이 유용하다고 생각하지 않는다, 개인적으로
나중에 답을 얻을 수 있도록 각 답변 아래에 '의견 추가'를 클릭하면 처음 응답 내용이없는 새로운 답변을 추가하는 대신 해당 답변에 특별히 답장 할 수 있습니다. –
나는 시도했다. 그러나 내가 50의 평판을 말해야한다고 말했다. –
나는 처음에 대답을 보았을 때와 똑같은 일을 지적했을뿐 아니라 같은 이유로 말할 수도 없었습니다. 제 생각에는 대답을 남길 수 있다는 것은 매우 어리석은 생각입니다.하지만 대답은 모두 평등 한 권한 임에도 불구하고 답을 남길 수는 없습니다. 또한 처음 시작할 때 점수를 얻는 것은 매우 어렵습니다. :) – Gerry
복제 : http://stackoverflow.com/questions/195520/what-is-spaghetti-code –
광산에서 PHP 의존적 인 예를 묻고있다. –