Google Apps Script:
रीफैक्टरिंग

कैसे:

Google Apps Script में, एक सामान्य परिदृश्य जो रिफैक्टरिंग से लाभान्वित होता है, वह है Google Sheets या Docs के साथ इंटरैक्ट करने वाली भारी स्क्रिप्ट्स का सरलीकरण। शुरू में, स्क्रिप्ट्स को तेजी से परिणाम प्राप्त करने के लिए जल्दी-बाजी में लिखा जा सकता है। समय के साथ, जैसे-जैसे स्क्रिप्ट बढ़ती है, वह अव्यावहारिक हो जाती है। आइए हम पठनीयता और कुशलता के लिए रिफैक्टरिंग के एक उदाहरण के माध्यम से चलते हैं।

मूल स्क्रिप्ट:

function logSheetNames() {
  var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  for (var i = 0; i < sheets.length; i++) {
    Logger.log(sheets[i].getName());
  }
}

यह फंक्शन एक Google Spreadsheet में प्रत्येक शीट का नाम लॉग करता है। जबकि यह ठीक से काम करता है, यह पुरानी JavaScript प्रैक्टिस का उपयोग करता है और स्पष्टता में कमी है।

रिफैक्टर्ड स्क्रिप्ट:

function logSheetNames() {
  const sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  sheets.forEach(sheet => Logger.log(sheet.getName()));
}

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

नमूना आउटपुट (दोनों स्क्रिप्ट के लिए):

लॉगर में आउटपुट कुछ इस प्रकार दिखाई देगा, मान लीजिए कि आपके Google Sheets दस्तावेज़ में “Expenses” और “Revenue” नामक दो शीट्स हैं:

[20-04-2023 10:00:00: INFO] Expenses
[20-04-2023 10:00:01: INFO] Revenue

रिफैक्टर्ड स्क्रिप्ट वही परिणाम प्राप्त करती है लेकिन साफ और एक नज़र में समझने में आसान होती है।

गहराई में

Google Apps Script में रिफैक्टरिंग अपने सिद्धांतों को व्यापक सॉफ़्टवेयर इंजीनियरिंग प्रैक्टिस से आंशिक रूप से विरासत में पाती है। यह 1990 के दशक के अंतिम भाग में, विशेष रूप से मार्टिन फाउलर की महत्वपूर्ण पुस्तक “रिफैक्टरिंग: इम्प्रूविंग द डिज़ाइन ऑफ एक्सिस्टिंग कोड” (1999) के कारण, अधिक पहचाने जाने योग्य और संरचित के रूप में सामने आया, जिसने विभिन्न रिफैक्टरिंग तकनीकों के लिए एक व्यापक गाइड प्रदान की। हालांकि उनके सिंटैक्टिक और फंक्शनल अंतरों के कारण प्रोग्रामिंग भाषाओं के बीच रिफैक्टरिंग की विशिष्टताएं भिन्न हो सकती हैं, लेकिन इसका मूल उद्देश्य समान रहता है: बाहरी व्यवहार को बदले बिना कोड में सुधार करना।

Google Apps Script के संदर्भ में, रिफैक्टरिंग के दौरान विचार करने के लिए एक महत्वपूर्ण पहलू Google द्वारा लगाए गए सेवा कोटा और सीमाएं हैं। कुशलतापूर्वक रिफैक्टर्ड कोड न केवल बेहतर पढ़ने योग्य होता है बल्कि इन सीमाओं के भीतर तेजी से और अधिक विश्वसनीय रूप से चलता है। उदाहरण के लिए, बैच ऑपरेशन (Range.setValues() के बजाय एक समय में एक सेल के मान सेट करना) निष्पादन समय और कोटा की खपत को काफी कम कर सकते हैं।

हालांकि, यह ध्यान देना महत्वपूर्ण है कि कुछ जटिल प्रोजेक्टों के लिए, Google Apps Script इन्हीं सीमाओं के कारण कम हो सकता है। ऐसे मामलों में, Google Cloud Functions या Apps Script के नए सहयोगी, AppSheet, जैसे विकल्पों की जाँच करना बेहतर स्केलेबिलिटी और कार्यक्षमता प्रदान कर सकता है।

अंततः, जबकि रिफैक्टरिंग Google Apps Script परियोजनाओं को बनाए रखने और सुधारने में एक महत्वपूर्ण कौशल है, वातावरण की सीमाओं को समझना और वैकल्पिक समाधानों पर विचार करना कुशल, रोबस्ट और रखरखाव योग्य कोड वितरित करने के लिए उतना ही महत्वपूर्ण है।