मैं सिर्फ ईवेंट संचालित आर्किटेक्चर में जा रहा हूं और यह जानना चाहता हूं कि कमांड और घटनाओं का नामकरण करने के लिए सम्मेलन क्या है। मुझे यह बहुत कुछ पता है: कमांड फॉर्म में होना चाहिए कुछ घटनाओं के रूप में होना चाहिए SomethingHappened। मुझे यह स्पष्ट करने की आवश्यकता है कि अगर मुझे अपने आदेशों के लिए 'कमांड' शब्द और 'इवेंट' को मेरी घटनाओं में जोड़ना है। DoSomethingCommand सिर्फ कुछ करने के विरोध में कुछ और कुछ हद तक किया गया है। मैं यह भी जानना चाहूंगा कि समुदाय-पसंदीदा सम्मेलन के पीछे तर्क क्या है। धन्यवाद!कमांड और घटनाओं के लिए नामकरण सम्मेलन
उत्तर
Command
और Event
प्रत्यय वैकल्पिक हैं और वरीयता का विषय हैं। मैं उन्हें छोड़ना पसंद करता हूं और अकेले नाम से स्पष्ट इरादा बनाने की कोशिश करता हूं। नामकरण आदेशों और घटनाओं का सबसे महत्वपूर्ण पहलू यह सुनिश्चित कर रहा है कि वे तकनीकी डोमेन से अधिक व्यापार डोमेन को प्रतिबिंबित करें। कई बार निर्माण, अद्यतन, जोड़ें, परिवर्तन जैसे शब्द बहुत तकनीकी हैं और व्यवसाय डोमेन में कम अर्थ है। उदाहरण के लिए, UpdateCustomerAddress
कहने के बजाय आप RelocateCustomer
कह सकते हैं जिसके लिए इसका एक बड़ा व्यावसायिक संदर्भ हो सकता है।
धन्यवाद, मैंने इस दृष्टिकोण का उपयोग करके कार्यान्वित करना शुरू कर दिया है। मुझे नेमस्पेस का उपयोग करने के बारे में @ मिकाएलओस्टबर्ग के बिंदु भी पसंद हैं। एक मामूली बिंदु मैंने नोटिस किया था हालांकि यह तथ्य था कि ऑब्जेक्ट/कमांड को ऑब्जेक्ट को तत्काल करने पर बेहतर पढ़ना प्रतीत होता था। की तुलना करें: 'वर userSignedOut = नए UserSignedOut() {};' ' bus.Publish (userSignedOutEvent); ' वर userSignedOutEvent = नए UserSignedOutEvent() {} के साथ ' ;' ' bus.Publish (userSignedOut); ' – Tolu
मेरा सम्मेलन नामस्थानों पर निर्भर करता है और इसका मतलब है कि मैं कभी भी प्रत्यय घटना और न ही कमांड का उपयोग करता हूं।
मैं आदेशों और घटनाओं को अलग-अलग नामस्थानों में भी व्यवस्थित करता हूं जो कुल प्रकार के आधार पर प्रभावित होते हैं।
उदाहरण:
// Commands
MyApp.Messages.Commands.Customers.Create
MyApp.Messages.Commands.Orders.Create
MyApp.Messages.Commands.Orders.AddProduct
// Events
MyApp.Messages.Events.Customers.Created
MyApp.Messages.Events.Orders.Created
MyApp.Messages.Events.Orders.ProductAdded
अपनी आवश्यकताओं तो आपको एक अलग विधानसभा में अपनी घटनाओं जगह चाहते हो सकता है पर निर्भर करता है। इसका कारण यह होगा कि यदि आपको डाउनस्ट्रीम सिस्टम में ईवेंट वितरित करने की आवश्यकता है। उस स्थिति में आप शायद डाउनस्ट्रीम सिस्टम को अपने आदेशों के बारे में परेशान नहीं करना चाहते हैं (क्योंकि उन्हें नहीं करना चाहिए)।
बहुत बहुत धन्यवाद, @ मिकाएल। यह बहुत समझ में आता है और वह दिशा है जिसमें मैं वर्तमान में झुका रहा हूं। मैं सिर्फ यह स्पष्ट करना चाहता था कि मानक अभ्यास क्या है। – Tolu
मैं नहीं कहूंगा कि यह मानक अभ्यास है। यह वही तरीका है जो मैं करता हूं। हालांकि, मुझे लगता है कि यह इस प्रकार है। नेट सम्मेलन पूरे नाम के हिस्से के रूप में नामस्थानों का उपयोग करते हैं और खुद को प्रत्यय और सामान के साथ दोहराते नहीं हैं। केवल नकारात्मक पक्ष यह है कि जब आप 'निर्मित' नामक 20 कुछ घटनाओं में से किसी एक के लिए उपयोग कथन जोड़ना चाहते हैं तो resharper एक बहुत सारे विकल्प प्रदान करता है। –
मैं अपने आदेशों और घटनाओं को अलग असेंबली में अलग करता हूं और उपरोक्त वर्णित @ MikaelÖstberg के रूप में अलग-अलग नामस्थानों का उपयोग करता हूं। मैं उन संदेशों के अंत में कमांड या इवेंट से निपटने के लिए वकालत नहीं करता हूं। +1 –
यदि कमांड/घटनाओं का सही ढंग से नाम दिया गया है तो निलंबित कमांड और ईवेंट अनावश्यक जानकारी होगी। यह शोर होगा जो आपके कोड को कम पठनीय बनाता है। हंगेरियन नोटेशन याद रखें? अधिकांश प्रोग्रामर (जिन्हें मैं जानता हूं) अब इसका उपयोग नहीं करते हैं।
कमांड और घटनाएं आपके आवेदन के लिए भाषा बनाती हैं ... एक एपीआई। 'कमांड' और 'इवेंट' जैसे शब्दों का उपयोग शायद सिस्टम-स्तरीय परिभाषाओं के लिए उपयोगी है जहां तकनीकी शर्तों को अर्थपूर्ण रूप से किसी इकाई के उद्देश्य में मिश्रित किया जाता है, लेकिन यदि आप डोमेन व्यवहार के लिए परिभाषाओं से निपट रहे हैं, तो सिस्टम/तकनीकी शब्दावली को छोड़ दें और व्यापार-भाषण का पक्ष लें। यह आपके कोड को अधिक स्वाभाविक रूप से और टाइपिंग को कम कर देगा। मैंने 'कमांड'/'इवेंट' परिशिष्टों के साथ शुरुआत की लेकिन महसूस किया कि यह समय बर्बाद था और मुझे लोकप्रिय भाषा डीडीडी से दूर ले गया। HTH, माइक
परंपरा है कि मैं एक बहुत देखा है और अपने आप का उपयोग किया है कि घटनाओं भूत काल में हो सकता है और वर्णित क्या हुआ चाहिए:
- UserRegistered
- AccountActivated
- ReplyPosted
कमांड कुछ ऐसा है जो आप करना चाहते हैं।तो ऐसे नाम हैं जो यह दर्शाते हैं कि बनाने के लिए:
- CreateUser
- UppgradeUserAccount
संगठन के लिए के रूप में, मैं आमतौर पर उन्हें एक साथ जड़ कुल कि वे के लिए कर रहे हैं के साथ डाल दिया। यह देखने में बहुत आसान बनाता है कि आप क्या कर सकते हैं और किस तरह की घटनाएं उत्पन्न होती हैं।
यही है, मैं प्रत्येक रूट कुल के लिए एक नामस्थान बना देता हूं और इसके तहत सब कुछ डालता हूं (भंडार परिभाषा, घटनाएं, आदेश)।
- MyApp.Core.Users
- MyApp.Core.Posts
आदि
- 1. सी # नामकरण सम्मेलनों के लिए नामकरण सम्मेलन
- 2. धागे के लिए नामकरण सम्मेलन?
- 3. आम पैटर्न के लिए नामकरण सम्मेलन?
- 4. नामकरण सम्मेलन?
- 5. परियोजना और असेंबली नामकरण सम्मेलन
- 6. घटनाक्रम - नामकरण सम्मेलन और शैली
- 7. उपयोगिता वर्गों और विधियों के लिए नामकरण सम्मेलन और संरचना
- 8. अद्वितीय बाधा के लिए नामकरण सम्मेलन
- 9. मॉड्यूल के लिए पाइथन नामकरण सम्मेलन
- 10. डीबी ट्रिगर्स के लिए नामकरण सम्मेलन
- 11. नई परियोजनाओं के लिए नामकरण सम्मेलन
- 12. Django विचारों के लिए नामकरण सम्मेलन?
- 13. राज्य/क्षेत्र/प्रांत के लिए नामकरण सम्मेलन
- 14. आंशिक कक्षा फ़ाइलों के लिए नामकरण सम्मेलन
- 15. एचटीएमएल: आईडी विशेषताओं के लिए नामकरण सम्मेलन
- 16. जेएसओएन क्रियाओं के लिए एमवीसी नामकरण सम्मेलन
- 17. वीबीएनईटी निजी क्षेत्रों के लिए नामकरण सम्मेलन
- 18. एचटीएमएल तत्वों के लिए नामकरण सम्मेलन
- 19. क्या MySQL के लिए नामकरण सम्मेलन है?
- 20. रेल माइग्रेशन के लिए नामकरण सम्मेलन
- 21. स्कैला स्थिरांक के लिए नामकरण सम्मेलन?
- 22. विकल्पों के लिए स्कैला नामकरण सम्मेलन
- 23. सीटीर्स और सेटर्स के पैराम्स के लिए नामकरण सम्मेलन
- 24. रूबी मणि नामकरण सम्मेलन
- 25. हास्केल मॉड्यूल नामकरण सम्मेलन
- 26. .NET परीक्षण नामकरण सम्मेलन
- 27. माइक्रोसॉफ्ट वीबी.नेट नामकरण सम्मेलन
- 28. बिटमैस्क पैरामीटर नामकरण सम्मेलन?
- 29. कार्यात्मक सर्वर नामकरण सम्मेलन
- 30. AJAX नामकरण सम्मेलन
धन्यवाद! बस ऐसा किया। कैसे पता लगाने के लिए थोड़ी देर लग गई। – Tolu