अद्यतन बनाए रखने:AOP: प्रत्येक विधि में संदर्भ-अवगत कोड सम्मिलित करें, जबकि सूखी
कुछ महत्वपूर्ण सुझाव और आगे और पीछे जॉर्ज के साथ साथ , मैं करने के लिए दो अलग अलग तरीकों के साथ आ गए हैं प्राप्त वास्तव में क्या मैं CodeRunner में चाहते हैं और Github के सार साइट पर पोस्ट की गई: Objective-C AOP gist
कोड किसी न किसी तरह है, क्योंकि यह एक नई अवधारणा है और मैं सिर्फ 1:30 बजे समाप्त हो गया। यह निश्चित रूप से काम करता है और कुछ नब्बे हैं जैसे सभी विधियों को ऑटो-जोड़ना जो शुरुआती, गेटर्स या सेटर्स नहीं हैं। [अंत अद्यतन]
कई बार (लेकिन निश्चित रूप से अक्सर नहीं) मैं ऐसी परिस्थिति में आया हूं जहां मेरा कोड थोड़ा DRYer होगा यदि मैं कक्षा में प्रत्येक विधि के लिए कोड के संदर्भ-संवेदनशील टुकड़े को कॉल कर सकता हूं । उद्देश्य-सी रनटाइम का उपयोग पूरी तरह से ठीक है, मैं सी या सी ++ समाधान भी स्वीकार करता हूं।
बजाय:
- (void)methodName1
{
self->selector = _cmd;
NSLog(@"This method is named: %@",_cmd);
//more code
}
- (void)methodName2
{
self->selector = _cmd;
NSLog(@"This method is named: %@",_cmd);
//more code
}
परिणाम एक ही होने के साथ कुछ इस तरह है:
+ (void)AOPMethod
{
self->selector = _cmd;
NSLog(@"This method is named: %@",_cmd);
}
- (void)methodName1
{
//more code
}
- (void)methodName2
{
//more code
}
एक वास्तविक दुनिया आवेदन में, AOPMethod अधिक कोड होते हैं और वहाँ हो जाएगा कक्षा में और अधिक तरीके।
पीएस, मैं डीआरवाई के साथ काफी जुनूनी हूं। गद्य और प्रदर्शन की स्पष्टता के साथ-साथ यह एक महत्वपूर्ण घटक है कि मैं लंबे समय तक अपने कोड की गुणवत्ता का आकलन कैसे करता हूं। प्रत्येक नए तरीके से मैं खुद को दोहराने से बच सकता हूं, लाभ घातीय है क्योंकि मैं कई परियोजनाओं में साझा किए जाने योग्य पुन: प्रयोज्य वर्गों में जितना संभव हो उतना कोड तोड़ देता हूं।
क्या आप सिर्फ प्रवेश/बाहर निकलने के लिए प्रयास कर रहे हैं? –
@GeorgFritzsche प्रश्न के लिए धन्यवाद। यदि कोई विधि अवरोध प्लेटफ़ॉर्म-अज्ञेयवादी है और विधि-स्तर संदर्भ-संवेदनशील डेटा जैसे _cmd को कक्षा के प्रत्येक विधि के भीतर उपयोग करने की अनुमति देगा-और कोड डुप्लिकेशन के बिना-फिर हां। दूसरे शब्दों में, यदि आप उल्लिखित मूल भाषाओं में से किसी एक में तकनीक साझा कर सकते हैं (और सभी प्लेटफार्मों पर ढांचे उपलब्ध नहीं हैं) जो बाद के उदाहरण के कुछ संस्करण को पूर्व के समान परिणाम देने की अनुमति देगा, जवाब। एक बार फिर धन्यवाद। –
आपके विशिष्ट उपयोग-मामले (समान हस्ताक्षर वाले सभी विधियों) के लिए [इस दृष्टिकोण] (http://stackoverflow.com/questions/9242571/copy-a-method-imp-for-multiple-method-wwizzles) हो सकता है विधि सूची में सभी उपयुक्त तरीकों को पैच करने के लिए बढ़ाया गया। फिलहाल मैं एक सुरुचिपूर्ण अधिक सामान्य समाधान, केवल अक्षम लोगों के बारे में नहीं सोच सकता। –