Çevik yazılım geliştirme ve tüm ilkeleri (SRP, OCP, ...) düşünürken kendime günlük kaydını nasıl tedavi edeceğimi soruyorum.
Bir uygulamanın yanında günlüğe kaydetme bir SRP ihlali mi?
yes
Uygulamanın günlüğe kaydetmeden de çalışabilmesi gerektiği için söyleyebilirim . Peki günlüğü nasıl daha iyi uygulayabilirim? Bazı desenleri kontrol ettim ve ilkeleri kullanıcı tanımlı bir şekilde ihlal etmemenin en iyi yolunun, prensibi ihlal ettiği bilinen herhangi bir deseni kullanmak, bir dekoratör deseni kullanmak olduğu sonucuna vardım.
Diyelim ki SRP ihlali olmadan bir sürü bileşenimiz var ve daha sonra günlük eklemek istiyoruz.
- bileşen A
- B bileşeni A kullanır
A için günlüğe kaydetmeyi istiyoruz, bu yüzden A ile süslenmiş başka bir D bileşeni oluşturuyoruz.
- arayüz I
- bileşen L (sistemin kayıt bileşeni)
- A bileşeni uygular I
- D bileşeni I'yi uygular, A'yı dekore eder / kullanır, günlüğe kaydetme için L kullanır
- B bileşeni bir I kullanır
Avantajları: - A'yı günlük kaydı olmadan kullanabilirim - test A Günlük kaydı alayına ihtiyacım olmadığı anlamına gelir - testler daha basittir
Dezavantaj: - daha fazla bileşen ve daha fazla test
Bunun başka bir açık tartışma sorusu olduğunu biliyorum, ama aslında birisinin bir dekoratör veya SRP ihlali yerine daha iyi kayıt stratejileri kullanıp kullanmadığını bilmek istiyorum. Varsayılan NullLogger gibi statik tekli logger ve syslog-logging isteniyorsa, çalışma zamanında uygulama nesnesini değiştirmeye ne dersiniz?