7

wikipedia के अनुसार COMEFROM प्रवाह नियंत्रण को मजाक, अपठनीय या कमजोर हानिकारक माना जाता है। मुझे लगता है कि ऐसी सुविधा एओपी परिदृश्यों में बहुत उपयोगी होगी (यानी तरीकों से लॉगर कॉल जोड़ने के बिना विधियों में लॉगर जोड़ना)।COMEFROM नियंत्रण प्रवाह

क्या इस तरह के नियंत्रण संरचना की गैर-स्पष्टता का नकारात्मक पक्ष संभावित उपयोगिता से अधिक है? क्या विचार करने के लिए कोई अन्य डाउनसाइड्स हैं?

this की वजह से इस प्रश्न से पूछने के लिए कहा गया। क्योंकि आप की जरूरत

+0

विषय पंक्ति से, मैंने अनुमान लगाया कि मैं कारण हो सकता हूं :) –

+1

इस तरह से लॉगिंग जोड़ना (असल में) कह रहा है कि इससे कोई फर्क नहीं पड़ता कि नियंत्रण प्रवाह का पालन करना बहुत मुश्किल है, क्योंकि आप " लॉगिंग के बारे में जानने की जरूरत है। अभ्यास में बुनाई को सामान्यीकृत कॉमेफोर्म सिंटैक्स के बिना लागू किया जाता है। यदि आप एक ऐसी भाषा में एओपी जोड़ना चाहते हैं जो आसानी से इसका समर्थन नहीं करता है तो मुझे यकीन नहीं है कि कॉमेफोर्म वास्तव में उन सभी की मदद करेगा। उदाहरण के लिए, सी में, बुनाई के लिए आपको उन स्थानों को कम करने की आवश्यकता होगी जो गोटो के दायरे में नहीं हैं, इसलिए यह आपके कोड को अव्यवस्थित करने से बचने के लिए सिंटैक्टिक चीनी नहीं है, यह बुनाई के लिए आवश्यक सभी तंत्र है जो सी –

+0

में नहीं हैं @ जोन यह मेरी गलती नहीं है आपके पास दिलचस्प विचार हैं :) – Goran

उत्तर

1

शुरुआत के लिए मूल रूप से किसी भी आधुनिक भाषा में बेकार है करने के लिए या तो:

  • संदर्भ स्थिति लाइन संख्या से से कूदने के लिए, और इन अस्थिर कर रहे हैं।
  • किसी स्थिति को इंगित करने के लिए कोड में मार्कर या लेबल रखें, जिससे इसे करने की आवश्यकता न होने के संभावित लाभों को नष्ट कर दिया जा सके।

इसके अलावा:

  • निरीक्षण अनिवार्य रूप से बेकार द्वारा डिबगिंग के किसी भी प्रकार बनाता है।
  • वास्तव में किसी भी संदर्भ को कैप्चर नहीं कर सकता है, जहां तक ​​यह कूद नहीं जाता है जब तक कि आप चर लगातार नहीं रखते हैं, जो परेशानी के लिए पूछ रहा है।

एक बहुत बेहतर विचार के बजाय करने के लिए होगा:

  • एक hooking एपीआई लिखें।
  • फ़ंक्शन पर कॉल करें!
0

आपके द्वारा उल्लेख किए गए उद्देश्य के लिए, Aspect Oriented Programming (विकिपीडिया) comefrom से अधिक संगठित समाधान प्रतीत होता है। एक अलग पाठ इकाई में विधि में लॉगिंग को कैसे जोड़ा जा सकता है, इसके उदाहरण के लिए Motiviation and Basic Concepts (ibid) के नीचे देखें।

एक पर्याप्त गतिशील भाषा में, यह एक विधि के लिए "रैप-अराउंड" संशोधकों का उपयोग बात इस तरह की संभाल करने के लिए संभव है:

def do_something 
    ... 
    end 
    log :do_something, "Something got done" 

इस काल्पनिक उदाहरण में, log मैक्रो को do_something विधि का कारण बनता है एक नई विधि द्वारा प्रतिस्थापित किया जाए जो पहले मूल do_something विधि को कॉल करता है, और फिर लॉग में कुछ लिखता है।

संबंधित मुद्दे