SORU
25 Kasım 2010, PERŞEMBE


Denetim bir PHP kod temeli

İlk kez bir proje var PHP kod temeli bakmak üzereyim ve yarı resmi bir denetim yapmak istiyorum. Proje için yeni olduğum için, bu sadece bana doğru kodu ile tanımak için bir şans verir, ama aynı zamanda kuruluş proje durumu hakkında harici bir görüş sağlamaz.

PHP "devam etmek için nasıl hakkında geri bildirim. bazı istiyorum" dil (yemek ve günlük olarak içmek nefes almak istemiyorum) ikincil benim gibi Özellikle, merak ediyorum:

  1. Statik analiz yapmak veya kod kapsama analizi veya veri yapısı oluşturmak için bu PHP araçları/sınıf diyagramları/hiyerarşileri

  2. Listesi "code kokuyor kırmızı bayraklar, kullanım ve kodlama dahil olmak üzere yükseltmek gerektiğini" anti-desenler ve artık kullanılmayan sınıflar/yöntemleri PHP, ve

  3. Genel olarak kod denetimleri yapmak için en iyi uygulamalar.

CEVAP
25 Kasım 2010, PERŞEMBE


Hiç kod denetlenmiş ettim, ama yolda size yardımcı olacak birkaç kod kokuyor düşünemiyorum.

  1. Hata Bastırma&; php.net -:

    PHP bir hata kontrol operatörü destekler: at işareti (@). PHP bir ifade e zaman, o ifade tarafından oluşturulan olabilir herhangi bir hata iletileri yok sayılır.

    Kendine bir iyilik yap ve Bul -^ gerçekleştirin . @ sembol ve bölmek ve fethetmek için IDE.

  2. Hata Bildirimleri&; aynı ven olarak yukarıda, PHP çalışma zamanı hata raporlama seviyesini ayarlamanızı sağlar Birlikte -. Birçok geliştiriciler basit uyarıları ve bildirimleri bastırır. E_ALL E_STRICT parametre error_reporting() işlev tüm PHP hataları görüntülemek için kullanmalısınız: error_reporting(E_STRICT);.

  3. globalanahtar kelime&; PHP programcı işlev kapsamında kırmak için genel değişkenler tanımlamak için izin verir -. Kapsam PHP biraz alt üst... Eğer bir fonksiyon bir değişken dışında oluşturursanız, eğer işlevi içinde global olarak ilan edilmiştir eğer işlev içinde değiştirilebilir. O kokuyor.

  4. Kaldırılan Özellikler&; PHP fonksiyonları ve özellikleri ile dolu, ve bunların çoğu deprecated - edilmiştir.

  5. mysql_query()&; geliştiriciler kullanmadım veya veritabanı soyutlama bir tür gelişmiş, kodlanmış veritabanı sorgularını her yere saçılmış bir sürü görmek için gidiyoruz -. Bu muhtemelen Kod Koku #1 taşınmalıdır.

  6. Statik Yöntemler var&; belki bir kodu herhangi bir dilde koku, bir geliştirici etkili yöntemler/onun tüm sınıfları statik yaparak her şeyi küreselleştirmek olabilir -. Jeremy Walton başına önerisi, kelime statik aramak ve Paamayim Nekudotayim operatörü (::).

  7. Karmaşık Sözdizimi Dize ve Değişken Ayrıştırmave bir kuruşa açıklamak zor, referans bak -: http://php.net/manual/en/language.types.string.php Değişken ayrıştırma bölümünde birkaç ekranlar için Bak. Eğer bu istismar ise hata ayıklama ve/veya anlamak için bir kabus olabilir.

  8. Değişken Değişkenler&; başka bir whopper -. This article delilik en iyi açıklar. Dark Lord yenik olup olmadığını belirlemek için 6* *iki dolar işareti için sadece arama.

  9. include_once() require_once()&; emin olmak için Bu fonksiyonların iyi durumda, -. Şablon ve görünüm mantık ayıran zaman çok yararlıdır. Onlar bir komut dosyası ayrıştırılır zaman sadece bir kez dahil olduğundan emin olun. Eğer varsa onları kullandı görürseniz ancak, liberaliş mantığıuygulama bölümü, bu geliştirici iç içe/dairesel içerir yazılı olan kırmızı bir bayrak olabilir kod bölümlerini zaten dahil edilmiştir ne farkında değil. Bu değilbu yüzdenkötüper sekesinlikle içinde bir pencere var , ama yeterlilik düzeyi geliştirici(ler). , @Sonunda Phil require_once() yerine autoloaders kullanmayı öneriyor. This article son derece ayrıntılı özdevinimli açıklıyor.

  10. Dize ve Gereksiz Booleans&; kötü PHP kodu bir sürü if ($is_true == "true") Bu gibi görünüyor -. Bu arama kolay ve düzeltmek için daha zordur. İçin dışarı bakmak için başka bir şey olmasa da--Gereksiz booleans PHP belirli bir konu: return ($isBad) ? true : false;.

  11. Kısa Etiketleri&; Burada php.net short tags hakkında şunları söyler -:

    Kısa etiketleri kullanarak kaçınılmalıdır zaman gelişmekte olan uygulamaları ya da kütüphaneleri bu amacı için yeniden dağıtım veya dağıtım PHP sunucuları olan değildir denetimi altında, çünkü kısa etiketler olmayabilir desteklenen hedef sunucu. Taşınabilir, yeniden dağıtılabilir kod için, kısa etiketleri kullanmak için değil emin olun.

    ASP tarzı etiketleri bile kötüdür.

  12. Kaza Sonucu Atama- Daha sık değil, göreceksin bunun içinde bazı kritik olmayan bileşenin kodu, nerede uyku ve/veya pusuda kadar olsun beklenmedik bir sonuç, bir gün: if ($foo = "Some Value"). Bu her zaman tabii ki true, değerlendirir ve bir yazım hatası nedeniyle büyük olasılıkla. Ancak, ender durumlarda aslında atama için test etmek isteyeceksiniz. Eğer bu çift parantez niyet göstermek için kullanmalısınız durumda: if (($foo = $this->bar()))

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Metheud

    Metheud

    9 EYLÜL 2006
  • oHeymarvin

    oHeymarvin

    11 Temmuz 2013
  • ThePhestor

    ThePhestor

    22 Mart 2011