programing

스파게티 코드의 특징은 무엇입니까?

abcjava 2023. 3. 2. 21:54
반응형

스파게티 코드의 특징은 무엇입니까?

누군가가 당신의 PHP 코드와 어플리케이션이 글로벌 변수를 사용하는 경우 스파게티 코드여야 한다고 말했습니다(내 추측으로는).워드프레스를 많이 써요.제가 아는 한, 그것은 훌륭한 PHP 소프트웨어에 가까운 최고의 것입니다.또한 구성요소 간에 상호 작용하기 위해 많은 글로벌 변수를 사용합니다.

하지만 그건 잊어버려 솔직히 그게 내가 아는 전부니까그래서 완전히 편파적이다;D

그래서 궁금해요 스파게티 코드의 특징은 무엇인가요?

PS: 제가 아는 건 워드프레스뿐입니다.따라서 PHP에서 완전한 웹 어플리케이션을 개발하는 데 경험이 적은 사람에게 좋은 답변을 줄 수 있기를 바랍니다(예를 들어 Stack Overflow 웹사이트).

  • 모듈화 없음(1개의 파일, 클래스, 모듈, 네임스페이스, 패키지, 또는 사용하시는 언어로 모듈화를 실현하기 위해서 사용하는 모든 것),
  • 많은.goto displays, displaces
  • 부실한 조직,
  • 기능과 목적을 명확하게 분리할 수 없습니다.(즉, 모든 것을 포괄하는 클래스 또는 기능)
  • 긴 기능
  • 이름 짓기가 서툴러요.
  • 전체적으로 일관된 코딩 스타일이 없습니다.
  • 구현과 코드 클라이언트 간의 명확한 인터페이스 계약은 없습니다.(즉, 함수의 입력, 출력, 사전 및 사후 조건이 무엇인지에 대한 사양은 없습니다.)
  • 추상화가 거의 없는 데이터 구조의 내부에 지나치게 의존합니다.
  • 함수는 문서에 기재하지 않고 글로벌 상태를 랜덤하게 허용/수정합니다.
  • 사소한 코드에 대한 코멘트 또는 문서화가 없습니다.
  • 필요 이상으로 복잡한 코드입니다.
  • 재사용의 부족.(복제된 코드, 즉 copypasta의 복사)
  • 검증도 유닛 테스트도 없습니다(신앙에 따라 동작합니다).
  • 매직넘버.

본질적으로, 설계와 사전 생각의 부족, 그리고 단지 잘못 부딪힌 해커들이 서로 부딪쳤다.이는 PHP뿐만 아니라 모든 언어에 적용됩니다.

PHP에서 풀 웹 애플리케이션을 개발한 경험이 거의 없는 사용자(예를 들어 Stack Overflow 웹사이트)를 위해

참고로 Stack Overflow는 PHP로 개발되지 않았습니다.

당신이 올린 코멘트 말인데, 설명은 매우 간단합니다.「」를 사용합니다.global연산자는 스파게티 면의 다른 끝처럼 변수의 출처를 알 수 없게 만듭니다.어디에서나 정의할 수 있습니다.따라서 함수를 호출할 때 이 변수의 값이 무엇인지 알 수 없습니다.대신 변수를 직접 전달하면 다음과 같이 명확해집니다.

function hello_testing($conditional_random) {
  if ($conditional_random)) {
      echo "foo is inside";  
  }
}

추신: http://en.wikipedia.org/wiki/Spaghetti_code

스파게티 코드는 일반 불량 코드와 구별되는 특성을 가지고 있습니다.스파게티는 매우 복잡하고 체계적이지 않기 때문에 프로그램을 통한 과정의 흐름을 따라가기가 어렵다.그것은 볼로네즈 그릇에 담긴 면을 풀어보려는 것과 같다.

★★★★★GOTO스테이트먼트(단어!)는 종종 다음 맥락에서 인용된다.GOTO스테이트먼트는 코드베이스 내의 임의로 정의된 다른 위치로 제어를 전송합니다.를 사용하여 시뮬레이션을 할 수 있습니다.goto예를 들어, 오류를 처리하는 대신 일반적인 비즈니스 로직을 구현하기 위해 예외를 사용하는 스타일 행동입니다.

글로벌 변수는 스파게티 코드의 원인이 됩니다.이는 값이 현재 프로그램 단위의 범위를 벗어나기 때문입니다.이로 인해 코드 베이스에서 변수가 지정된 값으로 설정되어 있는지(또는 실제로 어떤 값으로 설정되어 있는지) 판별하기가 어려워질 수 있습니다.

스파게티 코드는 기능적으로 정확하고 성능이 우수할 수 있습니다.이해하기 어려워서 문제이기 때문에 버그가 없는지도 확신할 수 없고 구조도 부족하여 트러블 슈팅이 어렵습니다.유사한 이유로 스파게티 코드는 취약하고 변경하기 어렵습니다. 버그가 발생할 위험이 높습니다.

「」, 「」의 .goto문장은 프로그램이 스파게티라는 것을 의미하지 않습니다. 잘 쓸수 있습니다.goto는 많은 현대의 프로그래밍 언어들은 그것을 불필요하고 바람직하지 않게 만들었다.

WordPress는 지금까지 본 것 중 가장 큰 스파게티 코드 PHP입니다.PHP, HTML, JavaScript, 그리고 그 사이에 있는 모든 것들이 같은 파일로 묶인 충격적인 혼합이 있다.스파게티 코드의 다른 예를 보려면 osCommerce 또는 Zen Cart를 참조하십시오.

사실 대부분의 오픈 소스 PHP 애플리케이션은 PHP에서 프로그래밍하는 방법에 대한 매우 충격적인 예입니다.좋은 구조화 예(즉, 스파게티가 아닌 것)를 보려면 Yii 프레임워크 또는 Zend Framework를 참조하십시오.CodeIgniter나 Kohana같은 프레임워크는 스파게티는 아니지만 PHP 4에서 사용되는 많은 기능을 사용하고 있기 때문에 PHP 5에서 사물을 구조화하는 방법의 좋은 예는 아닙니다(예를 들어, 실제 객체 상속 대신 경로 기반 상속 사용).

만약 당신이 절차적 프로그래밍의 합리적이고 좋은 를 원한다면 Drupal을 똑바로 보세요.복잡하기 때문에 PHP 어플리케이션 중 가장 성능이 좋은 것은 아닐 수 있지만 WordPress를 능가하는 것은 확실합니다.또한 이 어플리케이션으로 많은 것을 할 수 있습니다.

언급URL : https://stackoverflow.com/questions/2573704/what-are-the-characteristics-of-spaghetti-code

반응형