गेट्टर फंक्शन के लिए सर्वश्रेष्ठ अभ्यास
मैं, एक सरणी है कि मैं एक वेबसाइट पर प्रदर्शित करना चाहते हैं unit public x[31]
। Web3.js, मैं x [31] के माध्यम से x [0] के लिए 32 अलग-अलग कॉल बना सकता हूं। वैकल्पिक रूप से, मैं अपने सॉलिडिटी कॉन्ट्रैक्ट में एक गेट्टर व्यू फंक्शन जोड़ सकता हूं जो सिर्फ एरे को प्रस्तुत करता है
function showX()
public
view
returns (uint[32] memory Xout)
{
Xout= x;
}
इस फ़ंक्शन के साथ बिल्ट-इन मेरे सॉलिडिटी कॉन्ट्रैक्ट में मुझे बस एक बार अपनी जावास्क्रिप्ट फ़ाइल में यह कॉल करना होगा, और फिर एरे होगा। इस प्रकार, मैं या तो जावास्क्रिप्ट, या सॉलिडिटी पर अधिक काम कर सकता हूं। क्या विधि या तो अधिक कुशल / सुरुचिपूर्ण है?
जवाब
जैसा कि आप view
किसी भी मामले में कार्यों के साथ काम कर रहे हैं , बहुत अंतर नहीं है। डेटा सीधे आपके द्वारा उपयोग किए जाने वाले नोड से पुनर्प्राप्त किया जाता है और ब्लॉकचेन के लिए कोई वास्तविक लेनदेन नहीं है। इसलिए आप या तो अपने ब्राउज़र की कंप्यूटिंग (जावास्क्रिप्ट) या अपने नोड के कंप्यूटिंग का अधिक उपयोग कर रहे हैं। इसके अलावा इन कॉल्स में किसी भी गैस की लागत नहीं है।
वास्तुकला की दृष्टि से मैं आपकी आवश्यकताओं पर विचार करूंगा: यदि आपको कई प्रविष्टियों को पुनः प्राप्त करने की आवश्यकता नहीं है, तो उन्हें व्यक्तिगत रूप से प्राप्त करना आसान हो सकता है। दूसरी ओर हम शायद बहुत ही महत्वहीन मात्रा में डेटा के बारे में बात कर रहे हैं, कोई फर्क नहीं पड़ता कि आप इसे किस तरह से करते हैं, इसलिए यह वास्तव में गति या स्मृति आवश्यकताओं के मामले में कोई वास्तविक अंतर नहीं करता है। मैं यह भी नहीं सोचता कि कोई भी तरीका दूसरे की तुलना में अधिक सुरुचिपूर्ण है - बस अपनी आवश्यकताओं पर विचार करें।