प्रोटोबफ डिज़ाइन तर्क संभवतः डेटा प्रकार के समर्थन को "मूल" जितना संभव हो सके रखने की संभावना है, ताकि भविष्य में नई भाषाओं को अपनाना आसान हो। मुझे लगता है कि वे इन-बिल्ड संदेश प्रकार प्रदान कर सकते हैं, लेकिन आप लाइन कहां खींचते हैं?
DateTime
TimeSpan
यह केवल इसलिए है क्योंकि मैं एक सी # पृष्ठभूमि है, जहां इन प्रकार प्रदान करने के लिए लिया जाता है से आते हैं:
मेरे समाधान दो संदेश प्रकार बनाने के लिए किया गया था।
पीछे की ओर, TimeSpan
और DateTime
अधिक हो गया हो सकता है, लेकिन यह एच/एम/एस से एस और इसके विपरीत रूपांतरण से बचने का एक "सस्ता" तरीका था; कि ने कहा, यह आसान हो गया होता तो बस जैसे एक उपयोगिता समारोह को लागू करने:
int TimeUtility::ToSeconds(int h, int m, int s)
Bklyn, कि ढेर स्मृति नेस्टेड संदेशों के लिए प्रयोग किया जाता है ने कहा; कुछ मामलों में यह स्पष्ट रूप से बहुत मान्य है - हमें हमेशा जागरूक होना चाहिए कि स्मृति का उपयोग कैसे किया जाता है। लेकिन, अन्य मामलों में यह कम चिंता का विषय हो सकता है, जहां हम कार्यान्वयन की आसानी के बारे में अधिक चिंतित हैं (यह जावा/सी # दर्शन मुझे लगता है)।
प्रोटोबफ TextFormat::Printer
के साथ गैर-आंतरिक प्रकारों का उपयोग करने के लिए भी एक छोटा सा नुकसान है; आप प्रारूप है जिसमें यह प्रदर्शित किया जाता है निर्दिष्ट नहीं कर सकते, तो यह कुछ इस तरह दिखाई देंगे:
my_datetime {
seconds: 10
minutes: 25
hours: 12
}
... जो कुछ के लिए भी अत्यधिक शब्द है। उस ने कहा, अगर इसे सेकंड में प्रदर्शित किया गया तो इसे पढ़ना मुश्किल होगा।
निष्कर्ष करने के लिए, मैं कहता हूँ चाहते हैं:
- आप स्मृति/दक्षता पार्स करने, उपयोग सेकंड/मिलीसेकेंड बारे में चिंतित हैं।
- हालांकि, अगर कार्यान्वयन में आसानी उद्देश्य है, तो नेस्टेड संदेशों का उपयोग करें (
DateTime
, आदि)।
स्रोत
2009-12-24 10:44:18