Ben bir sürü hakkında atılan "spagetti" gördüm ve ben sadece ne is spagetti kod net bir açıklama istiyorum ve ne isn't. Ben doğrusu bunu yapıyor etmezdik çünkü.
Bu seçim benim dil olarak PHP Kaynaklar yardımcı olacaktır.
Terim "spagetti kod" tüm PHP özgü değildir - bu, tüm programlama dilleri için geçerlidir ve (en azından aynı paradigmanın) çoğu dilde oldukça benzer görünmelidir. Belki ancak bu anlamak ve sadece PHP bir örnek istiyorum.
Wikipedia article bu konuda oldukça net görünüyor:
Spaghetti code is a pejorative term for source code which has a complex and tangled control structure, especially one using many GOTOs, exceptions, threads, or other "unstructured" branching constructs. It is named such because program flow tends to look like a bowl of spaghetti, i.e. twisted and tangled. Spaghetti code can be caused by several factors, including inexperienced programmers and a complex program which has been continuously modified over a long life cycle. Structured programming greatly decreased the incidence of spaghetti code.
PHP özellikle ilgilidir olarak bu forum iplik, Top 100 Signs That I Am Writing Spaghetti Code in PHP, size bazı kullanım olabilir.
İşte spaghetti code oldukça iyi bir tanım.
Bu takip zor, aşırı kıvrık kötü yapılandırılmış kod tanımlamak için kullanılan öznel bir terim, tutarsız yan etkileri (özellikle küresel yan etkiler) veya bunların bir kombinasyonu üzerine güvenen.
PHP, en betik dilleri gibi, gevşek yazılır. Onları kullanmadan önce değişkenleri bildirmek gerekmez. Sadece birkaç isim, çok değişken bir "küresel" kapsamında kullanılan ve örtülü dosyaları (autoloading) dahil olmak üzere hükümler vardır. Bunların hiçbiri kötü özellikleri vardır ama, kötü kullanılan, onlar çok kolay spagetti kod yol açabilir.
classical definition spagetti kod "kimin kontrolü akış nedeniyle yapılandırılmamış dallanma kullanımı takip etmek zor kod" olduğunu. PHP beri, 1970'lerden beri icat çoğu dil gibi GOTO desteklemiyor, teorik içeri spagetti kodu yazamazsınız
Ancak, iyi bir yaklaşım global değişkenler liberal faydalanmak uzun komut ve fonksiyonları ile elde edilebilir. deeply nested if/elseif/else cascades ve kötü biçimlendirme için bonus puan. HTML, JavaScript, PHP, HTML üretir PHP, ve PHP which generates JavaScript which generates HTML, bazı vahşi karıştırma ekleyin ve bunu yazdı, hatta kişi, kimsenin kodunu anlayabiliyorum sağlamak.
Iyi yazılmış kodunda (işleyici üretilmesine çıktı olmalıdır bu durumda ölümcül bir hata koşulu olmadıkça) açıkça başlatmak için baştan sona akışı değil, aynı zamanda bitirmek takip etmek gerekir. Follow the rule of one entrance and one exit for every function.
Spagetti kod önlemek için bir yolu return ifadesi bir fonksiyonun içinde yazmak çok son şey olduğunu ve daha erken bir geri dönüş asla emin olun.
Bir işlevi beklenmedik bir değer döndürürse, temiz kod return deyimi başlar ve o değer nerede var görmek için geriye doğru çalışmak için izin verecek. Ancak kodu o zaman fonksiyonun ortasında gömülü olduğu ikinci return deyimi rastlarsanız kadar işlevi bu değeri iade nasıl olarak şaşkın saat israf edecek yaklaşık yarım saati spagetti ise.
Ben şiddetle cletus ve all subjektif olduğunu Andomar iddialarına katılmıyorum. Lütfen fonksiyon ortasında bir return ifadesi açıkça spagetti kodudur.
Michael Borgwardt, For some reason goto has been added to PHP 5.3: http://us2.php.net/goto
Ben eklenmiştir neden iyi bir sebep görmedim. Ben şahsen, faydalı olmak görmüyorum