Uyarı ve bildirimlerden kaçınmak iyi bir uygulama mı?


20

Zaten canlı prodüksiyonda olduğu birçok projede çalıştığım için genellikle PHP uyarıları ve bildirimleri ile çalışıyorum. Şimdi, bu canlı prodüksiyon web sitelerinde uyarıları ve bildirimleri açarsam, bunlara aşırı yüklenilir.

Evde, yerelde üzerinde çalıştığım projeler genellikle TÜM uyarıları ve bildirimleri kaldırmaya çalışırım. Bazen, bir bildirim almamanın bir çözümü yoktur, bu yüzden onları tamamen kapatmaya karar verene kadar bildirime bakmakla uğraşmak zorunda kalırım.

Sonunda, tüm uyarı ve bildirimlerden kurtulmaya çalışarak zamanımı boşa harcamayı mı yoksa daha büyük yarar için mi yaptığımı bilmiyorum.

Bu yüzden sorum, uyarıları ve bildirimleri tamamen önlemek iyi bir uygulama mı yoksa gerçekten önemli değil mi?


6
PHP bazen kullandığımdan bu yana bir süre geçti, ancak bildirimi / uyarıyı önleyebileceğiniz veya en azından yerel olarak bastırabileceğiniz@ bir durumla karşılaştığımı hatırlamıyorum .
CodesInChaos

27
Gördüğüm en ikna edici argüman "bu mesajlar bir sebepten dolayı var - kendimizi bir uyarı seli görmezden gelmeye koşullandırmak, önlenmiş olabilecek gerçek sorunları göz ardı etmemize neden oluyor." Başka bir deyişle, normal işlemler sırasında herhangi bir uyarı veya bildirim yoksa, herhangi bir uyarı veya uyarı olası bir sorunun işaretidir; her şey sadece gürültü ise, sadece SHTF'den sonra (ve muhtemelen müşteriler yaptıktan sonra) sorun fark etmeye başlayacaksınız.
Piskvor

12
Bildirimleri bastırmak için @ 'i yaygın olsa da kullanmak genellikle kötü bir şey olarak kabul edilir. Artık tüm bildirimleri kapatmak daha kötü çünkü artık potansiyel bir sorunu gizlediniz. Php programlama 15 yıl içinde henüz ben kontrol kod bir uyarı bastırmak zorunda kaldım bir dava rastlamak zorunda.
Ocak'ta Cerad

2
Bu bildirimlerin görüntülenmesini kapatıyor musunuz yoksa yapıyor error_reporting(0);musunuz? Hep kullanmak error_reporting(E_ALL);ve geliştirme ve üretim arasındaki tek fark ini_set('display_errors', 'on');vs ini_set('display_errors', 'off');. Kod hala aklımda olsa da her zaman bildirimleri ve uyarıları düzeltmeyi hedefliyorum. Kaçırmış olabileceğim ek uyarılar ve bildirimler olup olmadığını görmek için üretim sistemimdeki günlükleri sık sık ziyaret ettim.
MonkeyZeus

1
@Cerad'ın söylediklerine çok katılıyorum @. Yıllarca ve yıllarca süren PHP programlamasından sonra bu operatörü kullanmadım. Bir kez değil. Asla. Potansiyel sorunları gizlemekle kalmaz, aynı zamanda performansa da etkisi vardır: PHP, kodu çağırmadan önce hata raporlamayı kapatır -> kodu çağırır -> orijinal değerine geri döndürür. @Kodunuzda düzinelerce veya yüzlerce varsa bu adımlar pahalıdır .
Radu Murzea

Yanıtlar:


26

bu canlı prodüksiyon web sitelerinde uyarıları ve bildirimleri açarsam, bunlara aşırı yüklenilir.

Geliştirme, test ve kalite kontrolünde uyarıları her zaman en üst düzeyde açmalısınız, ancak üretimde olmamalıdır. Aslında, bir dogfooding uygulaması, yani kendinizi kullandığınız bir uygulama ise, bunları üretimde de açmalısınız.

Temel olarak: Onları gören kişinin kendileri hakkında bir şeyler yapacak durumda olduğu durumlarda onları açtırın (geliştirme ve testteki geliştirici kendilerini düzeltebilir, KG'deki test cihazı bir hata verebilir ve geliştirici Ayrıca kullanıcı, o zaman da) üretimde düzeltebilirim ama yok gördüğü kişi bile) programa nasıl bilmez onlar hakkında hiçbir şey (üretimde bir kullanıcı, yapamaz zaman bunları açın.

İdeal olarak, uyarıları hata olarak ele almayı da açmak isteyeceksiniz, ancak bu yalnızca ;-) ile başlayacak hiçbir şey yoksa işe yarar. Ancak bunu bir amaç olarak unutmayın! Bunu her dosya için ayrı ayrı açmak / kapatmak mümkünse, tüm yeni dosyalar için açın ve tüm uyarısız dosyalar için açın ve bir kez açıldığında bir daha asla kapatmayın .

Peki, aşırı yük hakkında ne yapmalı?

Her uyarı ve bildirimin bir listesini yaparsınız ve ardından aşağıdaki kurallara uyursunuz:

  1. Asla, asla, hiçbir koşulda listeye yeni bir uyarı eklemeyin. Her yeni kod parçası, her düzenleme, her değişiklik, her yama, her taahhüt yeni uyarılar getirmemelidir , sadece bunları düzeltebilir .
  2. Bir kod parçasına her dokunduğunuzda, o kod parçasındaki tüm uyarıları düzeltin. (Boyscout Kuralı: kamp alanını her zaman bulduğunuzdan daha iyi durumda bırakın.) Bu şekilde, önemli olmayan kod uyarılarla dolu kalabilir, ancak önemli kod zamanla daha temiz olacaktır. "Kod parçası" bir işlev, bir sınıf, bir dosya olabilir. Ayrıca, en az bir uyarıyı düzeltmek için bu kuralı gevşetebilirsiniz. Mesele şu: onları bulduğunuz gibi düzeltin.

Not: Bunların her ikisi de bir tür günlük veritabanı ve günlük filtreleme mekanizmasının olmasını gerektirir. Ayrıca, "günlük veritabanı" ve "günlük filtreleme mekanizması" sadece bir metin dosyası ve grep.

Önemli olan bu. Veritabanı olmadan, ne zaman yeni bir uyarı eklediğinizi bilemezsiniz ve filtreleme olmadan yine de aşırı yükleme sorunu yaşarsınız.

Not # 2: Bu sadece uyarılar için değil, aynı zamanda stil denetleyicileri, karmaşıklık metrikleri, kod kapsamı, statik analiz araçları vb. İçin de geçerlidir. Temelde:

  1. Yeni sorun eklemeyin.
  2. Karşılaştığınız gibi eski sorunları düzeltin.

Bu, kolayca öncelik vermenizi sağlar: sık sık düzenlenen ve dolayısıyla okunması ve bakımı kolay olan kod, zamanla daha iyi hale gelir. Sık sık dokunulmayan kod, daha iyi olmayacak, ama sorun değil, çünkü yine de kimsenin ona bakması gerekmiyor. Ve en azından kötüleşmeyecek.

Tabii ki, hiçbir şey sizi avlamaktan ve uyarıları öldürmekten başka bir şey yapmamak için zaman ayırmanızı engellemez. Bu çoğu zaman ekonomik olarak uygun değildir ve bunu akılda tutmak bir mühendis olarak sizin görevinizdir. "Mühendis bir dolar ile inşa edebilen, herhangi bir aptalın ikiyle inşa edebileceği bir mühendis."


3
Filtrelenmemiş kullanıcıya ulaşan uyarıları ve hataları kapatmanın bir başka noktası da geliştirici için bir uyarı olarak bilgilendirici olarak, hassas bilgi sızdırabilir (dosya adları, ilgili diğer sunucuların adları, kullanılan sql sorgularının yapısı, ... )
Hagen von Eitzen

Üretimdeki uyarılar kullanıcılara değil günlüklere gitmelidir! Hatalar günlüklere gitmeli, kullanıcıya değil. Hataları yakalamayan, günlüğe kaydetmeyen ve kullanıcıya uygun bir hata sayfası sunan bir web sitesi üretime hazır değildir. PHP bunu yanlış yapmayı çok kolaylaştırır, ancak yine de doğru yapmalısınız.
hobbs

49

Kodunuzdan uyarılar ve bildirimler geliyorsa, kesinlikle düzeltin. Benim tecrübelerime göre,% 95'te iyi huylu olabilir, ancak% 5'i kovalamak için harcanan sayısız saate yol açabilecek gerçek bir sorunu vurgular.

Bir nedenden ötürü kullanmanız gereken üçüncü taraf kodundan geliyorlarsa, genellikle fazla seçeneğiniz yoktur.

Eski kod tabanınızın gerçekten büyük olması farklı bir sorudur, o zaman eski kodu üçüncü taraf olarak ele alabilirsiniz, ancak yeni kodun uyarı gerektirmemesini isteyebilirsiniz.


8
Açıkça php'den farklı olan Java / eclipse'de çalışıyorum, ancak uyarının genellikle 1) derleyen bir şey olduğunu buluyorum ama açık bir hata yaptım veya 2) şimdi iyi olan ama yolda kötü olacak bir şey
corsiKa

1
@corsiKa ben edildi PHP Yorumunuzu tercüme ama bunun tek bir kelime değiştirilmesi gerektiğini fark etti.
wizzwizz4

3
Tabii ki, bu uyarılar usingifadelerinizin sırası hakkında StyleCop'tan gelmedikçe ...
Dan Pantry

12

Fark eder, önemi var. Bir uyarı, testlerinizi bozmayabilir ve hatta bir süre vahşi doğada görünmeyebilir - ancak yaklaşmakta olan bir hatanın belirtisi olabilir. Şu anda öncelikle C # / C ++ ile gelişiyorum ve kurtulmak ve kod tabanımızdan uyarıları tutmak için tanımlanmış bir stratejimiz var. Neyse ki bu roket bilimi değil =).

Çalıştığınız dilde uyarıları hata olarak kabul etme yeteneği ve değişken uyarı seviyeleri varsa, aşağıdakileri yaparım:

  1. Uyarı almamanız için uyarı seviyesini yeterince aşağı çevirin. En düşük uyarı düzeyindeyseniz ve hala uyarı alıyorsanız, bunları düzeltmeyi deneyin. Bunları çözüm yoksa, o zaman şimdilik bitti ama umarım yapabilirsiniz bunları düzeltmek. Harika.
  2. Artık hiçbir uyarınız olmadığından (büyük olasılıkla düşük bir uyarı seviyesinde), anahtarı çevirin ve tüm uyarıları hata olarak kabul edin.
  3. Uyarı seviyesini yükseltmeye ve tüm yeni uyarıları düzeltmeye çalışın. Yapamıyorsanız, uyarı seviyesini tekrar düşürün, ancak uyarıları hata olarak ele almayı kapatmayın.

Bu sadece benim kod uyarıları işe yaramaz bulmak - onları dışarıda tutar .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.