मैं इस शुरुआती अभ्यास को करने के लिए एक ड्रैग एंड ड्रॉप इंटरफेस को प्रोटोटाइप करना चाहता हूं। मेरे हमले की योजना नीचे स्क्रीनशॉट की तरह दिखती है। मैंने शुरुआत में आठ स्कोपों को छोड़ दिया था, जो कि मैंने छोड़े गए कुछ काल्पनिक कार्यों के आधार पर किया था। मैं जितनी जल्दी हो सके “ड्रैग एंड ड्रॉप” और “पर्सिस्ट पोजीशन” में जाना चाहता था क्योंकि वे सबसे अज्ञात के साथ सबसे मूल्यवान हैं। उन तक पहुँचने के लिए, मुझे CSS में बॉक्स और कार्यों का एक मूल लेआउट बनाने की आवश्यकता थी जो CSS (“बॉक्स लेआउट”) में एक ऐप टेम्पलेट के अंदर प्रस्तुत करता है।
जब मैंने “बॉक्स लेआउट” स्कोप पर शुरुआत की, तो मैं स्कोप विस्तार समस्या में भाग गया।
सिद्धांत रूप में गुंजाइश कुछ सीएसएस लेआउट के साथ एक रेल ऐप पर एक HTML टेम्पलेट प्राप्त करने के बारे में थी, इसलिए तत्व ड्रैग और ड्रॉप इंटरैक्शन के प्रयोग के लिए तैयार होंगे।
लेकिन रेल ऐप को सेट करने से खोजे गए कार्य शुरू हो गए। मुझे टेम्पलेट प्रस्तुत करने के लिए कुछ मार्गों के माध्यम से सुलभ नियंत्रक क्रिया स्थापित करनी पड़ी। यह स्क्रीन ऐप के “मध्य” में है। यह पहली चीज़ नहीं है जिसे आप देखते हैं, और यह शायद किसी प्रोजेक्ट और/या अकाउंट जैसी किसी बड़ी चीज़ से संबंधित है। स्कोप्स और टास्क डेटा जिन्हें मैं इस टेम्पलेट पर प्रस्तुत करना चाहता था, शायद उन्हें किसी तरह लटका देना चाहिए। जैसे ही मैंने रूट कॉन्फ़िगरेशन फ़ाइल खोली, मुझे आश्चर्य हुआ … क्या मुझे प्रोजेक्ट को रूट में शामिल करने की आवश्यकता है, जैसे `प्रोजेक्ट्स /: आईडी / स्कोप्स`? यदि हां, तो क्या मुझे अभी एक मूल परियोजना मॉडल तैयार करना चाहिए? क्या मुझे एक ‘प्रोजेक्ट’ मॉड्यूल में स्कोप्स_कंट्रोलर को घोंसला बनाना चाहिए, जो मुझे बाद में चाहिए? मैं उन कार्यों के बारे में क्या करूँगा जिन्हें मैं टेम्पलेट में प्रस्तुत करना चाहता हूँ? क्या मुझे पहले डेटाबेस में उनके लिए कुछ जुड़नार बनाने चाहिए, इसलिए मुझे उन्हें टेम्प्लेट में हार्ड-कोड करने की ज़रूरत नहीं है, जिससे जब मैं लेआउट पर पुनरावृति कर रहा हूँ तो बहुत सारे डुप्लिकेट मार्कअप हो जाएंगे?
ये प्रश्न आसानी से 15 मिनट के स्टब को एक दिन भर के साइडट्रैक से भरे प्रोजेक्ट में बदल देते हैं। बात यह है कि उन सभी चीजों को आखिरकार करने की जरूरत है। तर्क मोहक है: “मुझे बाद में इसकी आवश्यकता होगी, तो क्या मुझे इसे अभी नहीं करना चाहिए?” जैसे कि मैं वास्तव में “पूर्ण” नहीं हूं और मैं डेटाबेस स्कीमा और ठीक से नेस्टेड नियंत्रकों जैसी चीजों को छोड़ कर धोखा दे रहा हूं।
हां मुझे बाद में उन चीजों की जरूरत पड़ेगी। लेकिन तुरंत बाद में नहीं। बाद में बाद में। अभी, मैं एक ऐसी जगह पर जाने की कोशिश कर रहा हूं, जहां मैं इस परियोजना को करने की मेरी क्षमता को बनाने या तोड़ने वाले ड्रैग एंड ड्रॉप के बारे में अज्ञात का जवाब दे सकूं।
उस अगली चीज़ के बारे में सोचना – ड्रैग एंड ड्रॉप स्कोप – ने सबसे छोटा रास्ता अपनाने के मेरे संकल्प को मजबूत किया।
सामान का एक गुच्छा तैयार करने के बजाय मुझे पता था कि मुझे ऐप में बाद में आवश्यकता होगी, मैंने रूट (`संसाधन: स्कोप्स`) पर एक गूंगा मार्ग बनाया, एक संबंधित नियंत्रक उत्पन्न किया, और इसे डेटा अक्षर के साथ पॉप्युलेट किया:
उसके बाद, मेरे पास वह था जो मुझे बहुत सारे डुप्लिकेट मार्कअप के बिना टेम्प्लेट को बिछाने के लिए शुरू करने की आवश्यकता थी:
जैसे ही इन्हें उन बक्सों के ग्रिड में प्रस्तुत किया जाता है जो मेरे मन में मौजूद मूल अवधारणा से मेल खाते हैं, मैं आगे बढ़ने के लिए तैयार हो जाऊंगा और ड्रैग और ड्रॉप प्रश्नों का प्रोटोटाइप बनाना शुरू कर दूंगा, जिनके बारे में मैं चिंतित हूं।
यह “दाएँ से बाएँ” सोच का एक उदाहरण है। हम जो कुछ कर रहे हैं उसके “सही” पर कुछ डालकर (इसके बाद, क्रमिक रूप से), एक पथ निर्भरता पेश की जाती है। उस निर्भरता का विश्लेषण करने से हमें पता चलता है कि दाईं ओर की चीज़ आगे होने के लिए बाईं ओर क्या होना चाहिए और क्या दायरे से बाहर है।
इससे पहले, जब मैं उस प्रारंभिक लेआउट स्कोप के साथ किया गया था, तो बाहर से कुछ भी मुझे नहीं बता रहा था। इसका एक नाम और एक अनुमानित उद्देश्य था, लेकिन यह प्रभावी रूप से खुला हुआ था।
एक के दाईं ओर दूसरा दायरा रखने से सब कुछ बदल जाता है। अब एक लक्ष्य है – कुछ खिलाना है। बाईं ओर के स्कोप को वह करना होगा जो अगली चीज़ की आवश्यकता है, और अधिक नहीं। मैं तब रुक सकता हूं जब वर्तमान दायरा इनपुट के रूप में अगले दायरे के लिए आवश्यक आउटपुट बनाता है।
इस बारे में सोचने से मुझे स्कोपिंग में सीक्वेंस की भूमिका के लिए एक नई सराहना मिलती है। स्कोपिंग केवल कार्यों को पूर्ण करने योग्य इकाइयों में बंडल करने के बारे में नहीं है। स्कोप्स का बहुत अनुक्रम बताता है कि “पूर्ण” का अर्थ पथ-निर्भर श्रृंखला में दाएं से बाएं होता है।
—
सामान्य ढांचे के रूप में “दाएं से बाएं सोच” को समझाने के लिए ग्रेग एंगल का धन्यवाद।