मैं औसत perl प्रोग्रामर हूं। मुझे भाषा के साथ समस्या नहीं है, लेकिन "अच्छा" ऑब्जेक्ट डिज़ाइन के साथ। जबकि मैं गंभीर समस्याओं के बिना सीपीएएन मॉड्यूल (अधिकांश) समझने में सक्षम हूं, मैं खुद को सरल ऑब्जेक्ट पदानुक्रम भी डिजाइन करने में असमर्थ हूं।पर्ल/मूस ओओ डिज़ाइन, पैकेज पदानुक्रम
उदाहरण - अब एक बहुत आसान आवेदन (वेब और कमांड लाइन इंटरफेस) का सामना करना पड़:
- पहले से ही प्रमाणीकृत छात्र एक ज़िप-फाइल (क्या एक प्रतिपादन काम होता है)
- को फ़ाइल अनज़िप और अपलोड कर देती है नई निर्देशिका और जाँच यह सामग्री दी गई है और शून्य या अधिक छवियों (exatly एक फ़ाइल
commands.txt
शामिल करना चाहिए) - यदि सामग्री ठीक है - निर्देशिका के लिए बुलाया जगह ले जाने:
JobRepository
(किसी अन्य निर्देशिका) - उपयोगकर्ता अगर फैसला प्रतिपादन काम चलाने के लिए - वैश्विक प्रतिपादन कतार (फिर से, एक और निर्देशिका)
- किसी अन्य प्रक्रिया कतार (फीफो - IPC::DirQueue के साथ बनाया गया) से नौकरियों लेता है के लिए अपने ही
JobRepository
से काम भेजने के लिए और प्रतिपादन प्रक्रिया निष्पादित - समाप्त होने पर, परिणाम उन में
JobRepository/result
निर्देशिका - भेजने ईमेल उपयोगकर्ता के लिए रखा
- छात्र ज़िपित परिणाम
डाउनलोड कर सकते हैं bash
में यह कुछ के साथ संभव है "नहीं जटिल "बैश स्क्रिप्ट के लिए - लेकिन मैं पर्ल (क्योंकि वेब इंटरफेस) में यह करना चाहते हैं - और चाहते अभ्यास perlish (मूस) वस्तु डिजाइन ...
और यहाँ मेरी समस्या शुरू होता है।
कोशिश की "विज़ुअल" संज्ञा-विश्लेषण दृष्टिकोण और अगली छवि बनाएं।
, छवि प्रकाशित किया गया था, क्योंकि यह के रूप में "छोटा" है:
package Iren::JobRepo;
use Moose;
use warnings;
has 'Jobs' => (is => 'rw', isa=>ArrayRef[Iren::Job]);
…
method AddJob {
...
}
आदि
आप देख सकते हैं, यह वास्तव में सरल है - लेकिन immediatelly कुछ निर्णय का सामना करना पड़ समस्या, उदाहरण:
- अनजिप/ज़िप/चेकजोब विधियों को किस ऑब्जेक्ट को करना चाहिए? यह संबंधित है: जॉब रिपोजिटरी नौकरी "ज़िप" स्वयं ही?
- उपयोगकर्ता को कौन सी ऑब्जेक्ट ईमेल भेजनी चाहिए?
$user->send_email
- मुझे मूर्खतापूर्ण आता है, क्योंकि हम उपयोगकर्ताओं को ईमेल भेजते हैं, न कि उपयोगकर्ता को ... - "कौन" को उपयोगकर्ता के जॉबरेपो से रेंडरक्यूयू में नौकरी भेजनी चाहिए?
JobRepo->SendJobToRenderQueue
या मुझे कुछRenderQueue->addJob
विधि पर कॉल करना चाहिए? - क्या वस्तु चाहिए ईसा
IPC::DirQueue
का उपयोग करना चाहिए - - परिपत्र परिभाषाओं (RenderQueue की implememtation होना चाहिए)। उपयोगकर्ता में जॉब रिपोजिटरी, रिपोजिटरी में कई नौकरियां हैं, लेकिन नौकरी है? एक उपयोगकर्ता? (पता करने के लिए काम संबंधित जिसे करने की जरूरत है) - और इतने पर ..
आप देख सकते हैं, कोई भूमिका, यहाँ कोई लक्षण - कुछ भी नहीं है - यह सरल है ... - लेकिन सवाल का पूरा :(
किसी को भी गंदगी को साफ मदद कर सकते हैं क्या "अच्छा" पैकेज पदानुक्रम होना चाहिए
तो, मैं सच में खो रहा हूँ और मैं अपने आप को निराश करने के लिए शुरू कर दिया है अतिरिक्त सवाल (मुझे पता है, इन राय आधारित हैं)?। - लेकिन मुझे उनसे पूछना चाहिए ...
- पर्ल/मूस के लिए अच्छा ऑब्जेक्ट डिज़ाइन कैसे सीखें? (शायद मैं कभी भी दूसरी भाषा का उपयोग नहीं करूंगा)
- ऑब्जेक्ट डिज़ाइन (और स्टैक ओवरफ्लो भी) के बारे में Google को खोजते हुए कई बार "चार" पुस्तक (और कुछ अन्य) का उद्धरण दिया गया है। लेकिन आमतौर पर जावा के लिए। पर्ल/मूस के लिए खरीदना उचित है? या यहां पर्ल/मूस के लिए कुछ और अच्छी किताबें हैं?
- कुछ अच्छी तकनीक है कि उचित ऑब्जेक्ट डिज़ाइन कैसे जांचें?
- यूएमएल से कोड जनरेटर शायद मूस के लिए मौजूद नहीं है - या यहां कुछ उपयोग करने योग्य और पुनर्निर्मित है?
- बस - आप अपने ऑब्जेक्ट पदानुक्रम/भूमिकाओं/लक्षणों आदि को कैसे महारत हासिल करते हैं ...? जबकि मैं उदाहरण पढ़ रहा हूँ - मैं समझता हूँ
$cat->diets
:) - लेकिन कुछ नया करने में माहिर - मेरे लिए खराब है ...
पाठ की दीवार के लिए खेद है। मुझे अच्छी किताब या कुछ भी मदद करने के लिए कोई संकेतक मिल जाएगा ...
+1 महान प्रीपे काम करने के लिए और इच्छा है कि मैं अच्छा ऑब्जेक्ट डिज़ाइन की देखभाल के लिए दूसरा +1 दे सकता हूं। – DVK