Spagetti kod özellikleri nelerdir?

4 Cevap php

Biri PHP kodu ve uygulama genel değişkenleri kullandığınız zaman o spagetti kod (Ben bu varsayıyorum) olması gerektiğini söyledi. Ben WordPress bir çok kullanırım. Bildiğim kadarıyla, büyük PHP yazılım yakın en iyi şey. Ve onun bileşenleri arasındaki etkileşim için birçok global değişkenleri kullanır.

Açıkçası, ben bildiğim tek şey var çünkü Ama, unutun. Yani bu tamamen önyargılı olduğunu; D

So, I am just curious, What is the characteristic of spaghetti code?

PS: Ben biliyorum tek şey WordPress. Yani, umarım, belki bu birileri PHP üzerinde tam bir web uygulaması (örneğin, yığın taşması web sitesi) gelişmekte az deneyime sahip biri için harika bir cevap vermek yardımcı olacaktır.

4 Cevap

  • Hiç modülerlik (bir dosyada her şey, sınıf, ad, paket ya da ne olursa olsun dil modülerlik sağlamak için modül kullanır),
  • goto 's bol
  • Kötü organizasyon,
  • Işlevsellik ve amacı net bir ayrım. (Yani sınıfları veya işlevleri her şeyi kapsayan, bir)
  • Uzun fonksiyonları.
  • Kötü adlandırma.
  • Boyunca hiçbir tutarlı kodlama tarzı.
  • Uygulama ve kod müşterileri arasında net bir arayüz sözleşme. (Yani, fonksiyonların girişler, çıkışlar, öncesi ve sonrası koşulları nelerdir hiçbir özelliğidir)
  • Aşırı güven biraz soyutlama ile veri yapılarının iç donanım üzerinde.
  • Fonksiyonlar rastgele permute / belgelerin içinde herhangi bir söz olmadan küresel durumunu değiştirin.
  • Yorum veya olmayan-önemsiz kod belge eksikliği.
  • Olması gereken daha karmaşık kodu.
  • Yeniden kullanım eksikliği. (Çoğaltılamaz kod bol a.k.a. copypasta)
  • Hiçbir doğrulama veya birim test (bu inanç çalışır).
  • Sihirli numaralar.

In essence, a lack of design and forethought, and just a mishmash of hacks slapped together. This applies to any language, not just PHP.

PHP üzerinde tam bir web uygulaması geliştirme konusunda biraz deneyim (örneğin, yığın taşması web sitesi) sahip biri için

Bilginize, ama taşması PHP ile geliştirilmiş değildi.

Well, talking of comment you posted, the explanation is very simple. Using global operator makes source of a variable is unknown, like other end of spaghetti noodle. It can be defined everywhere. So, when you call your function, you have no idea what value this variable has. Instead of it, direct passing a variable makes it plain and clear:

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

P.S. http://en.wikipedia.org/wiki/Spaghetti_code

Spagetti kod düz kötü kodlardan ayıran belirli özellikleri vardır. Spagetti son derece karmaşık ve yapısal olmayan, yani bu program sayesinde bir işlem akışını takip etmek zordur. Bu bolognese bir kase erişte çözmek için çalışıyor gibi.

GOTO ifadeleri (! Dehşetli kelime) genellikle bu bağlamda atıf nedeni budur: bir GOTO deyimi transferler kod tabanı bir başka keyfi belirlenen yerde kontrol. Çoğu programlama dilleri goto tarzı davranışını simüle etmek için istismar edilebilir komutları var; Örneğin, yerine hataları işleme daha düzenli iş mantığını uygulamak istisnalar kullanarak.

Değerler mevcut program biriminin kapsamı dışında atanır çünkü küresel değişkenler spagetti kod katkıda bulunur. Bu kod tabanı değişken (o hiç bir değere ayarlanmış olup olmadığını ya da aslında) belirli bir değere ayarlanır nerede zor belirlemek için yapabilirsiniz.

Bu arada, goto tabloların kullanımı bir program spagetti olduğu anlamına gelmez. Bu goto, sadece onun esnekliğini kötüye değil öz-disiplin bir sürü gerektirir kullanarak kesin, iyi yapılandırılmış kod yazmak tamamen mümkündür. Modern programlama dilleri kullanımı gereksiz ve istenmeyen yaptık.

WordPress Etrafta gördüğüm spagetti kod PHP en büyük parçasıdır. Aynı dosyaları toplu tüm arasında PHP, HTML, JavaScript ve her şeyi şok edici bir karışımı var. Eğer spagetti kod osCommerce bakmak ya da başka bir örnek istiyorsanız Zen Cart.

Aslında ben açık kaynak PHP uygulamalarının büyük bir çoğunluğu PHP program nasıl oldukça şok edici örnekleridir söylemek cesaret. Eğer iyi yapılandırılmış bir örneğe bakmak isterseniz (yani, non-spagetti) ardından Yii çerçevesi veya Zend Framework bakmak. Vardı çünkü CodeIgniter ve Kohana gibi çerçeveler, olmasa spagetti, onlar PHP 4'te kullanılan birçok özellikleri kullanmak gibi PHP 5 şeyler yapısı nasıl çok iyi örnekler değil (örneğin, yol tabanlı miras yerine gerçek bir nesne devralma kullanarak) PHP 5 kadar bunları yapmanın daha iyi bir yolu.

Eğer yapılan prosedürel programlama bir reasonbly iyi bir örnek istiyorsanız doğru Drupal bakmak. Çünkü karmaşıklığı iyi performans PHP uygulama, olmayabilir, ama emin WordPress yener ve onunla aynı şeyleri birçok yapabilirsiniz.