Uygulamanın çok fazla hatası olduğu ve kullanıcıların sorunlardan ve çalışmalardan bıktıkları için birkaç projeyi kurtarmak için "fırsat" verildi ve yöneticiler tüm dev ekibinin yerini aldı. Bu kod tabanlarının tümü, en üst oyu verilen yanıtın açıkladığı gibi uygulama düzeyinde merkezi hata işlemeye sahipti. Bu cevap en iyi uygulamadırsa neden işe yaramadı ve önceki geliştirici ekibin sorunları çözmesine izin vermedi? Belki bazen işe yaramıyor? Yukarıdaki yanıtlar, geliştiricilerin tek sorunları düzeltmek için ne kadar zaman harcadıklarından bahsetmiyor. Sorunları çözmek için zaman anahtar metrikse, try..catch blokları ile enstrüman kodu daha iyi bir uygulamadır.
Ekibim kullanıcı arayüzünü önemli ölçüde değiştirmeden sorunları nasıl çözdü? Basit, her yöntem try..catch bloke edildi ve her şey, hata adı, hata mesajı, uygulama adı, tarih, ve sürüm. Bu bilgi ile geliştiriciler en çok oluşan istisnayı belirlemek için hatalar üzerinde analiz çalıştırabilir! Veya en fazla sayıda hata içeren ad alanı. Ayrıca, bir modülde oluşan bir hatanın düzgün bir şekilde işlendiğini ve birden fazla nedenden kaynaklanmadığını doğrulayabilir.
Bunun bir başka avantajı da geliştiricilerin hata günlüğü yönteminde bir kırılma noktası ayarlayabilmeleri ve bir kırılma noktası ve "adım atma" hata ayıklama düğmesine tek bir tıklama ile, gerçek tam erişim ile başarısız olan yöntemde hata noktasında, hemen pencerede bulunan nesneler. Hata ayıklamayı çok kolay hale getirir ve kesin satırı bulmak için sorunu çoğaltmak için yürütme yönteminin başlangıcına geri sürüklenmesine izin verir. Merkezi kural dışı durum işleme, bir geliştiricinin 30 saniye içinde bir kural dışı durumu kopyalamasına izin veriyor mu? Hayır.
"Bir yöntem yalnızca mantıklı bir şekilde işleyebiliyorsa bir istisna yakalamalıdır." Bu, geliştiricilerin yayınlanmadan önce meydana gelebilecek her hatayı tahmin edebileceklerini veya karşılaşacaklarını ima eder. Bu bir üst düzey doğru olsaydı, uygulama istisnası işleyicisine ihtiyaç duyulmazdı ve Elastik Arama ve logstash için pazar olmazdı.
Bu yaklaşım aynı zamanda geliştiricilerin üretimde aralıklı sorunları bulmasını ve düzeltmesini sağlar! Üretimde hata ayıklayıcı olmadan hata ayıklamak ister misiniz? Yoksa üzgün kullanıcılardan çağrı alıp e-posta almayı mı tercih edersiniz? Bu, başkalarını bilmeden ve sorunu çözmek için gereken her şey orada olduğu için destekle e-posta, IM veya Slack'e gerek kalmadan sorunları düzeltmenize olanak tanır. Sorunların% 95'inin çoğaltılması gerekmez.
Düzgün çalışması için, ad alanının / modülün, sınıf adının, yöntemin, girdilerin ve hata iletisinin yakalanabileceği ve hangi yöntemin en başarısız olduğunu vurgulamak üzere toplanabilmesi için bir veritabanında depolanabilen merkezi günlük kaydı ile birleştirilmesi gerekir. önce sabit.
Bazen geliştiriciler, yığını bir bloktan istisnalar atmayı seçer, ancak bu yaklaşım, atmayan normal koddan 100 kat daha yavaştır. Günlüğe kaydetme ile yakalama ve bırakma tercih edilir.
Bu teknik, 2 yılda 12 Devs tarafından geliştirilen bir Fortune 500 şirketinde çoğu kullanıcı için her saat başarısız olan bir uygulamayı hızlı bir şekilde stabilize etmek için kullanıldı. Bu 3000 kullanılarak 4 ay içinde farklı istisnalar tanımlanmış, sabitlenmiş, test edilmiş ve dağıtılmıştır. Bu, ortalama olarak 4 ay boyunca her 15 dakikada bir düzeltmeye çıkar.
Kod enstrümanı için gerekli olan her şeyi yazmanın eğlenceli olmadığını kabul ediyorum ve tekrarlayan koda bakmamayı tercih ediyorum, ancak her yönteme 4 satır kod eklemek uzun vadede buna değer.