यह देखते हुए कि:
गुजर संदेश की अवधारणा पर आधारित है
मैं तर्क दूंगा कि एपीआई एक नए उच्च स्तरीय encapsulation (आईई।) के pertinence के बारे में एक अच्छा संकेत है। एक नई वस्तु की परिभाषा)
यदि इस नई वस्तु द्वारा प्रदान की जाने वाली सेवाओं (यानी एपीआई) सुसंगत हैं, और एक विशेष वस्तु में पुन: समूहित होने पर शेष कार्यक्रम के लिए बेहतर संपर्क किया जाता है, तो हर तरह से उपयोग करें एक नई वस्तु
अन्यथा, यह एक ओवरकिल संभव है।
चूंकि आप एक नई वस्तु, परीक्षण की धारणा बनाने कि नई वस्तु के भीतर करना आसान (और कुछ अन्य नकली वस्तुओं) हो सकता है द्वारा एक सार्वजनिक एपीआई का पर्दाफाश करने के बजाय कई बनाने विरासत वस्तुओं को उसी परिचालन का परीक्षण करने के लिए।
यदि आप लेनदेन का परीक्षण करना चाहते हैं, तो आपको वास्तव में UI से डेटा पुनर्प्राप्त करने के लिए MyBoundaryClass के MyEventHandler का परीक्षण करना होगा।
लेकिन अगर आप एक TransactionManager परिभाषित करते हैं, कि आप विभिन्न वास्तुकला का स्तर (जीयूआई बनाम डेटा) MyBoundaryClass में मौजूद कम युग्मन का अवसर देता है, और एक समर्पित वर्ग में डेटा प्रबंधन निर्यात करने के लिए।
फिर, आप स्वतंत्र परीक्षण परिदृश्य में डेटा दृढ़ता का परीक्षण कर सकते हैं, विशेष रूप से सीमा मानों पर ध्यान केंद्रित कर सकते हैं, और डेटाबेस विफलता, और मामूली स्थितियां, आदि।
परीक्षण परिदृश्य आपको समेकन (Daok द्वारा उल्लिखित महान बिंदु) को परिशोधित करने में आपकी सहायता कर सकता है। यदि आपके परीक्षण सरल और सुसंगत हैं, तो संभावना है कि आपकी ऑब्जेक्ट्स में अच्छी तरह से परिभाषित सेवा सीमा हो।
चूंकि यह तर्क दिया जा सकता है कि Coupling and Cohesion are two cornerstones of OO Programming, लेनदेन प्रबंधक जैसी नई कक्षा के संयोजन का मूल्यांकन किए जाने वाले कार्यों के सेट की अवधि में मूल्यांकन किया जा सकता है।
संवेदना का अर्थ है कि एक निश्चित वर्ग बारीकी से संबंधित कार्यों का एक सेट करता है। दूसरी तरफ, एकजुटता की कमी का मतलब है कि एक वर्ग कई असंबंधित कार्यों का प्रदर्शन कर रहा है। [...] एप्लिकेशन सॉफ़्टवेयर अंततः अप्रबंधनीय हो जाएगा क्योंकि अधिक से अधिक व्यवहार बिखरे हुए हैं और गलत जगहों पर समाप्त हो गए हैं।
आप व्यवहार अन्यथा अपने TransactionManager में कई अलग-अलग स्थानों में लागू फिर से इकट्ठा करते हैं, तो यह ठीक हो सकता है, बशर्ते कि अपने सार्वजनिक एपीआई क्या एक सौदे विभिन्न उपयोगिता कार्यों की तरह शामिल है और नहीं "लेन-देन के बारे में सामग्री" के स्पष्ट चरण दर्शाते हैं। एक वर्ग में एक वर्ग की समेकन का न्याय करने के लिए पर्याप्त नहीं है। नाम और उसके सार्वजनिक एपीआई का संयोजन आवश्यक है।
उदाहरण के लिए, एक TransactionManager में से एक दिलचस्प पहलू यह पूरी तरह से लेन-देन की धारणा, संपुटित होगा जो होगा:
- लगभग बाकी प्रणाली च द्वारा अज्ञात हो जाते हैं, और अन्य वर्गों के बीच युग्मन को कम कर देंगे और 'लेनदेन'
- लेनदेन चरणों के आसपास अपने एपीआई को केंद्रित करके लेनदेन प्रबंधक की समेकन को मजबूत करता है (जैसे initTransaction(), persistTransaction(), ...), किसी भी लेनदेन उदाहरण के लिए किसी भी गेटर या सेटर से परहेज करना।
+1 (भाग्यशाली) लोगों को विचार करने के लिए जो आपकी वस्तुओं को बनाए रखेंगे! अनुरोध के अनुसार –
आपके विशिष्ट मामले के लिए विचार जोड़ा गया। – VonC
"अनुरोध के अनुसार मेरे उत्तर में जोड़ा गया" कक्षा के एकजुटता के संबंध में नामकरण विचार "। अनुरोध के अनुसार – VonC