डेवलपर स्क्रिप्ट प्रबंधित करने का सही तरीका क्या है?


15

डेवलपर्स अपने काम में मदद करने के लिए स्क्रिप्ट बनाते हैं। उदाहरण के लिए, कुछ मापदंडों के साथ मावेन को चलाने के लिए, अनावश्यक पृष्ठभूमि वाले कार्यों को मारने के लिए जो विकास में फसल करते हैं, या एक निश्चित सर्वर से कनेक्ट होते हैं। स्क्रिप्ट्स कोर बिल्ड स्क्रिप्ट्स नहीं हैं और न ही ये हमारे कंटीन्यूअस इंटीग्रेशन सर्वर में उपयोग की जाती हैं।

उन्हें प्रबंधित करने का सबसे अच्छा तरीका क्या है? उन्हें एक निर्देशिका (शायद /scripts) में डालने के लिए और उन्हें गिट में जांचने के लिए? कुछ फ़ाइल सर्वर में उन्हें अलग से बनाए रखने के लिए?

उन्हें स्रोत कोड के रूप में मानने का तर्क यह है कि वे स्रोत हैं और बदल सकते हैं। ऐसा नहीं करने का तर्क यह है कि वे केवल सहायक उपकरण हैं और सभी डेवलपर्स को किसी भी स्क्रिप्ट (जैसे लिनक्स-विशिष्ट स्क्रिप्ट जहां कुछ डेवलपर्स विंडोज पर काम करते हैं) की आवश्यकता नहीं है।


7
व्यावहारिक रूप से हर परियोजना में कार्यक्षमता होती है जो केवल कुछ डेवलपर्स कभी भी निपटेंगे। इसे गुप्त रखने का कोई कारण नहीं है। "एक कमरे में एक आदमी खबरदार!" (जोएल
स्पॉल्स्की

1
यदि आप उन्हें स्रोत-नियंत्रण में डालते हैं तो आप सुनिश्चित करते हैं कि आप दुर्घटना के बाद उठ सकते हैं और चल रहे हैं। यह एक लाभ है यदि आप अपने वर्तमान पीसी को कचरे में फेंक सकते हैं, एक नया ले सकते हैं और घंटे के भीतर उत्पादक हो सकते हैं और चल रहे हैं।
पीटर बी

"एक कमरे में एक आदमी से सावधान!" (स्टीव मैककोनेल, 1993) @KilianFoth
kubanczyk

जवाबों:


23

डेवलपर स्क्रिप्ट भी संस्करण नियंत्रण में जाती हैं, क्योंकि आमतौर पर ये स्क्रिप्ट संस्करण नियंत्रण में आइटम पर भी निर्भर करती हैं, जैसे फ़ाइल पथ।

यदि इन लिपियों का वर्जन किया जाता है, तो उन्हें सभी डेवलपर्स के लिए भी काम करना चाहिए ताकि बचने के लिए हर डेवलपर अपने स्वयं के स्क्रिप्ट लिखता है, जो एक रखरखाव नरक बन जाता है।

इसके अलावा बगफिक्स या इन लिपियों के सुधार स्वचालित रूप से प्रत्येक डेवलपर के लिए संस्करण नियंत्रण के माध्यम से रोल आउट किए जाते हैं।


10

@ सिमोन के जवाब के अलावा।

सभी सॉफ्टवेयर इंजीनियरिंग में प्रोग्रामिंग, डिजाइनिंग या मॉडलिंग के बारे में नहीं है। काम के दिनों में हम लगातार काम करते हैं। आपने पहले ही एक का उल्लेख किया है - आईडीई के बाहर परियोजना का निर्माण - लेकिन कई और भी हैं।

अनुभवी / सक्रिय डेवलपर्स इन कार्यों को स्वचालित करते हैं। कुछ, यहां तक ​​कि उपकरण तब बनाते हैं जब ये कार्य SDLC का हिस्सा बन जाते हैं और वे थकाऊ होते हैं - और गलती से - हाथ से करने के लिए। कार्यक्रम दोहराव वाले काम करने में अच्छे हैं, चाहे वे कितने भी थकाऊ क्यों न हों। हम - इंसान - वो अच्छे नहीं हैं।

इन उपकरणों / लिपियों के अन्य सकारात्मक प्रभाव हैं

  1. उत्पादकता
  2. ज्ञान का हस्तांतरण
  3. स्वायत्तता (नए लोगों के लिए)

तो, हाँ स्क्रिप्ट एससीएम में होनी चाहिए और उन्हें डेवलपर के टूलबॉक्स में एक और उपकरण होना चाहिए।

फ़ोल्डर के बारे में /scriptsमैं कहूंगा कि यह कोई फर्क नहीं पड़ता। सादगी के लिए मैं उन्हें परियोजना की मूल निर्देशिका में छोड़ देता हूं ताकि स्क्रिप्ट में घोषित सभी मार्ग परियोजना के फ़ोल्डर के सापेक्ष हों । अगर मुझे बाहरी फ़ोल्डर या फ़ाइलों तक पहुंच की आवश्यकता है, तो मैं नरम लिंक बनाता हूं ।

SCM में स्क्रिप्ट की जाँच करने से पहले विचार करने योग्य बातें।

  • सुरक्षा के लिए, सुनिश्चित करें कि लिपियों में कोई हार्डकॉन्ड क्रेडेंशियल्स नहीं हैं - आदर्श रूप से, लिपियों को अच्छी तरह से पैराड्राइज्ड होना चाहिए -

  • सुनिश्चित करें कि स्क्रिप्ट सिस्टम के लिए अजीब चीजें नहीं करते हैं, उदाहरण के लिए आदेशों को निष्पादित करने के लिए जो पूर्ववत नहीं किया जा सकता है (सबसे विशिष्ट rm -rf)।

  • चूंकि ये परियोजना के स्रोत का हिस्सा बन जाते हैं, इसलिए दस्तावेज़ीकरण की बहुत सराहना की जाती है।

  • स्क्रिप्टिंग रॉकेट साइंस नहीं है। स्क्रिप्ट संक्षिप्त करें। एक के बजाय उन सभी पर शासन करने के लिए ... और अंधेरे में उन्हें बांधें , अधिक, छोटे और संक्षिप्त बनाएं। मानो आप SRP लगा रहे थे।


4

मैं कुछ और नकारात्मक राय देने जा रहा हूं। एक तरफ, डेवलपर स्क्रिप्ट जो सामान्य रूप से प्रभावी, और उपयोगी होनी चाहिए, अन्य डेवलपर्स के साथ साझा की जानी चाहिए, और ऐसा करने का सबसे अच्छा तरीका है कि उन्हें उसी रिपॉजिटरी में कोड के साथ बैठना है।

हालाँकि मैं स्क्रिप्ट के लिए प्रतिबद्ध होने के लिए प्रवेश के लिए एक उच्च बार सेट करूँगा। स्क्रिप्ट कोड हैं, सॉफ्टवेयर की तरह ही। इसका मतलब है कि उन्हें कोड के अन्य टुकड़ों के समान माना जाना चाहिए:

  • कोड समीक्षा के माध्यम से जा रहे हैं
  • यदि संभव हो तो परीक्षण और स्वचालित
  • कोडबेस में परिवर्तन करते समय माना जाता है (विशेष रूप से, यदि एक स्क्रिप्ट का उपयोग कई डेवलपर्स द्वारा किया जाता है, तो एक ऐसा बदलाव करना जो स्क्रिप्ट को तोड़ता है, बहुत संघर्ष पैदा करेगा)
  • बनाए रखा (सब कुछ है कि जरूरत के साथ - प्राथमिकता, समय, प्रलेखन आदि)।

ऐसे और भी कई विचार हैं जो सॉफ्टवेयर की तुलना में स्क्रिप्ट पर अधिक लागू होते हैं:

  • सबसे पहले और सबसे महत्वपूर्ण यह है कि किसी के संगठन और हितधारक को स्क्रिप्ट को बनाए रखने में निवेश करने के लिए समझाने में बहुत मुश्किल है जो डेवलपर्स के जीवन को आसान बनाते हैं। इसका मतलब यह है कि उपरोक्त मानदंडों को पूरा करने के लिए समय निकालना कठिन है - यह एक स्क्रिप्ट लिखना आसान है जो आपके पर्यावरण पर आपके लिए काम करता है, लेकिन इसे मानकीकृत करना, इसे स्थिर बनाना, दस्तावेज करना अधिक समय लगता है। इसका मतलब है कि स्क्रिप्ट तब तक मृत कोड बन सकती है जब तक कोई डेवलपर स्क्रिप्ट को चालू रखने का औचित्य नहीं बना सकता।
  • यह बहुत कम संभावना है कि कई डेवलपर्स इसे बनाए रखने के लिए एक जटिल स्क्रिप्ट के साथ पर्याप्त रूप से परिचित होंगे, या कि कई डेवलपर्स कोड के स्वामित्व को महसूस करते हैं। जब मूल डेवलपर निकल जाता है, तो किसी और से स्वामित्व लेने के लिए खोज करना मुश्किल हो सकता है (और यह जानने के लिए कि स्क्रिप्ट कैसे काम करता है और कठिन हो सकता है) के लिए समय को ढूंढना और उचित ठहराना)।
  • यह बहुत अधिक संभावना है कि एक स्क्रिप्ट डेवलपर्स मशीन के साथ बातचीत करेगी और किसी तरह से पर्यावरण का निर्माण करेगी। यह भी बहुत संभावना है कि आपके पास कई अलग-अलग वातावरण वाले कई डेवलपर्स होंगे। यदि कोई स्क्रिप्ट किसी वातावरण को गड़बड़ कर देती है क्योंकि इसे ठीक से बनाए नहीं रखा गया था या एक कोने के मामले पर विचार नहीं किया गया था, तो आप अपने सॉफ़्टवेयर के केवल एक रात के निर्माण को नहीं तोड़ रहे हैं, आप संभावित रूप से एक डेवलपर को एक दिन या उससे अधिक का काम दे रहे हैं ताकि उन्हें प्राप्त किया जा सके पर्यावरण वापस सामान्य। यह baad रक्त और विश्वास की हानि का कारण बन सकता है।
  • क्योंकि स्क्रिप्ट अक्सर सॉफ़्टवेयर के लिए ही बाहरी होती हैं, उन्हें बनाए रखना एक चुनौती हो सकती है। यदि लिपियों को स्वचालित रूप से नहीं चलाया जाता है, तो उनके लिए बासी जाना या भूल जाना आसान है, जिस बिंदु पर वे मृत कोड बन गए हैं और सिर्फ तकनीकी ऋण हैं, जिसे साफ करने के लिए किसी को समय निकालने की आवश्यकता होगी।

संक्षेप में, स्क्रिप्ट एक व्यक्तिगत डेवलपर के लिए बहुत मददगार हो सकती है, लेकिन फिर कोडबेस के भाग के रूप में साझा करना बहुत अधिक कठिन कार्य हो सकता है, और संभावित रूप से हल होने की तुलना में अधिक समस्याओं का कारण बन सकता है।


मैं सहमत। किसी तरह, हम यहां इस तरह के घटनाक्रम की पृष्ठभूमि वाले वरिष्ठ प्रोफाइल या डेवलपर्स को स्क्रिप्ट सौंपते हैं। मेरे द्वारा बताए गए 3 सकारात्मक साइड-इफ़ेक्ट तभी संभव हैं जब न्यूनतम गुणवत्ता हो :-)। शेल स्क्रिप्ट्स का विकास वास्तव में डेवलपर्स द्वारा किया जाता है जो केवल अपने मुख्य एसडीके पर ध्यान केंद्रित करते हैं। OS लेयर हमारे लिए बहुत सारी चीजें कर सकती है।
Laiv
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.