SORU
9 EYLÜL 2009, ÇARŞAMBA


Kansız Etki anti-desen tek Sorumluluk Prensibi vs Modeli

Tek Sorumluluk Prensibi oldukça ciddiye alan bir proje yapıyorum. Küçük sınıflar var ve işleri oldukça basit. Ancak, kansız bir etki alanı modeli var model sınıflarımız herhangi bir davranışı yoktur, sadece mülkiyet çanta. Bu bizim tasarım hakkında bir şikayet değil - aslında oldukça iyi iş gibi görünüyor

Tasarım değerlendirme sırasında, SRP yeni davranış sistemine eklendiğinde getirdi, artık yeni davranış genellikle yeni bir sınıfta biter. Bu çok kolayca birim test edilebilir şeyler tutar, ama ilgili olduğu yersiz davranışları çekerek gibi hissediyorum çünkü bazen beni çok şaşırttınız.

SRP düzgün uygulamak için nasıl benim anlayış geliştirmeye çalışıyorum. Bana öyle geliyor ki, SRP içinde muhalefet ekleyerek iş modelleme davranışı paylaşan aynı içerik için bir nesne, çünkü nesne ister istemez biter durumda birden fazla ilgili bir şey, ya da yapmak bir şey ama bilerek birden fazla iş kuralları değiştirmek şeklin çıktılar.

Eğer o ise, o zaman sonuç kesinlikle projemizde olduğu gibi Kansız bir Etki alanı Modeli, gibi geliyor. Henüz Kansızlık Etki alanı Modeli anti-pattern.

Bu iki fikir bir arada varolabilir mi?

EDİT: içerik ile ilgili bağlantılar: BİR çift

- http://www.objectmentor.com/resources/articles/srp.pdf SRP< / ^ br . Kansız Etki Alanı Modeli - http://martinfowler.com/bliki/AnemicDomainModel.html

Sadece bir peygamber bulmak ve müjde olarak söylediklerini takip etmeyi seven geliştirici değilim. "Kurallar", gibi bir kaynak iki kavram. tanımı bu belirten bir yolu olarak bu bağlantılar sağlamak kalmayayım

CEVAP
3 HAZİRAN 2010, PERŞEMBE


Etki alanı Modeli (RDM) ve Tek Sorumluluk Prensibi (SRP) zengin bir oran değil. RDM çok özel subclassof bir SRP - model denetleyici sınıfları "veri fasulye tüm iş mantığı" (DBABLİCC). savunan ile Oran daha fazla.

Eğer Martin SRP chapter, okursanız onun göreceksinmodemörnek tamamen etki alanı katman, ama DataChannel ve Bağlantı özetleme ayrı sınıflar gibi kavramlar. İstemci kodu için yararlı bir soyutlama olduğu için Modem bir sarıcı olarak kendini tutuyor. Uygun hakkında çok daha fazla(tekrar)faktoringdaha sadecekatman. Uyum ve kaplin hala tasarımın temel ilkeleri vardır.

Son olarak, üç konular:

  • Martin kendisine de belirttiği gibi, her zaman kolay farklı görmek değil 'değiştirmek için bir sebep'. Çevik, vb YAGNİ çok kavram. değişim için gelecek sebep beklentisiyle vazgeçirmek, hemen belli değil olanları icat etmemeliyiz. 'Gibi . değiştirmek için 'erken, beklenen sebep göremiyorum ^em>gerçek riskuygulama SRP ve geliştirici tarafından yönetilmelidir.

  • Önceki için fazla biledoğru(ama gereksizanalSRP ) uygulama istenmeyen karmaşıklığa neden olabilir. Her zaman düşünmek hakkında gelecek zavallının suçu kimde korumak sınıfı: will, çalışkan soyutlama önemsiz davranış içine kendi arayüzler, sınıflar ve bir satırı uygulamaları gerçekten yardım anlayışı ne sadece bir tek sınıf?

  • Yazılım tasarımı genellikle rakip güçler arasındaki dengeyi ilgili oluyor. Örneğin, katmanlı bir mimari ne, örneğin, bir mal değişimi, ticaret dersi,, söz gerçeği hakkında çoğunlukla SRP iyi bir uygulama, amabooleanbirnumaralamabir dalgalanma etkisi görmektedirtümkatmanları etki, cepheler, web hizmeti, GUI üzerinden db? Bu noktada kötü tasarım mı? Mutlaka: tasarım başka bir yönü iyilik gerçeğine işaret eder.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Google Developers

    Google Devel

    23 AĞUSTOS 2007
  • Influencer Plus

    Influencer P

    2 Ocak 2013
  • Liz Morgan

    Liz Morgan

    4 Aralık 2011