Bir yapıştırıcı veya yönetim sınıfı ne zaman çok şey yapıyor?


10

Tasarımlarımdaki diğer sınıfları yöneten merkezi sınıflar yapmaya eğilimliyim. Her şeyi kendisi saklamaz, ancak çoğu veri isteği ilk önce "yöneticiye" gider. Bir cevap bakarken bu soruya ben terimini "Tanrı Nesne" fark ettim. Wikipedia bunu anlaşılır bir şekilde karşıt önleyici olarak listeliyor.

Verileri ve mesajları bir yerden bir yere geçiren meşru bir tutkal sınıfı veya modülü ile çok fazla şey yapan bir sınıf arasındaki çizgi nerede?

Yanıtlar:


15

Birçok insan "sınıf asla başınızdan büyük olmamalı" gibi şeyler söyler.

Ancak, bu konuda gerçekten harika, birinci sınıf programcılar ile bir tartışmaya katıldım. Çıplak Nesneler adamlarından biriyle konuştum. Anlayabildiğimiz kadarıyla, bazen bu olur ve etrafta dolaşmanın pek bir yolu yoktur.

Normalde, bunun gerçekleştiği tek sınıf, alan adınızın temel öğesini temsil eden bir alan adı nesnesidir - bankacılık hesabı, perakende satış vb. o sınıfın sorumluluğunu düşünmek istiyorum. İşte benim ipuçları:

  • "Yönetici", "Yardımcı" veya "Hizmet" olarak adlandırılırsa, büyük olasılıkla çok büyüktür. Bir sınıfın sorumluluğunun ne olması gerektiğini öğrendikten sonra, diğer sorumlulukları devretmeyi daha kolay bulacaksınız.
  • Buna "Denetleyici" deniyorsa, bir grup başka sınıf arasındaki etkileşimi kontrol etmekten sorumlu olmalı ... ve başka bir şey olmamalıdır.
  • Farklı fiziksel düğümleri arasında veri ve mesaj ileten sonra ya bir seri şeklinde belirli bir mesaj dönüştürme ile mücadele etmesi, ya da transfer mekanizması yönetir. Örneğin, bir Banka İşlemini XML'e dönüştüren bir sınıfınız ve bu XML'i HTTP üzerinden gönderen başka bir sınıfınız olabilir.
  • Bir uygulamadaki farklı modüller arasında olayları geçiyorsa, bir etkinliğin ne zaman ortaya çıktığını dinleyicilere bildirmekten sorumlu olmalı ve başka bir şey olmamalıdır.

Genel bir kural olarak, eğer çok büyükse, başka bir sınıfa herhangi bir sorumluluk devredip devredemeyeceğinize bakın ve eğer yapamıyorsanız, muhtemelen tamam.


Yararlı somut yönergelerle iyi cevap. Verilerin tümünün veya neredeyse hepsinin, alanın bazı yönlerini temsil ettiği etki alanı nesneleri için böyle sınıflar oluşturma eğilimindeyim ve bunu bir birim olarak ele almak istiyorum. Daha sonra, sadece büyük sınıfın içinde gerçekten somutlaşan sınıflara olan gerçek sorumlulukları devretme eğilimindeyim. Bu yüzden çizgiye oldukça yakınım ve muhtemelen yazarken bireysel sınıfları küçültmeye eğilimliyim.
jprete
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.