मुझे यह पोस्ट कॉमन सी ++ मुहावरों की खोज करते हुए मिली, क्योंकि मैं हाल ही में इसमें काफी गहरे उतर रहा हूं और चाहूंगा कि मेरा कोड शौकिया तौर पर ऐसा न लगे जैसा कि मुझे लगता है कि ...: -पी
पर्ल के साथ काफी समय बिताने के बाद, मैंने उस भाषा में मुहावरे पाए हैं जो प्राकृतिक भाषाओं में पाए जाते हैं, जैसे कि अंग्रेजी या स्पेनिश (केवल दो मैं कुछ मुहावरों को जानने के लिए पर्याप्त रूप से जानता हूं)।
मैं असहमत हूं कि एक मुहावरा "छोटे डिजाइन पैटर्न" जैसा है। मैं अब भी असहमत हूं, हालांकि इतना कम है कि एक मुहावरा एक भाषा में कमी के आसपास काम करने का एक तरीका है।
शायद ल्यूक डैंटन का जवाब सबसे करीब आता है, लेकिन मुझे समझाने दीजिए। मुझे लगता है कि एक मुहावरा अच्छी तरह से, है, मुहावरेदार जो लोग भाषा का प्रयोग की। आमतौर पर, एक सामान्य अभिव्यक्ति या अभिव्यक्तियों का क्रम, जो शायद स्पष्ट नहीं है, एक ऑपरेशन करता है या एक ऐसे तरीके से इरादे व्यक्त करता है जो उन लोगों के लिए समझ में आता है जो पहले धाराप्रवाह हैं ।
Perl पर वापस, शायद सबसे अच्छी तरह से ज्ञात मुहावरा " श्वार्टज़ियन ट्रांसफ़ॉर्म " है, एक अभिव्यक्ति जो एक कॉम्पैक्ट और कुशल तरीके से डेटा पर एक प्रकार का प्रदर्शन करती है। यह इस तरह के ऑपरेशन को करने के लिए सबसे स्पष्ट तरीका नहीं है, लेकिन यह रसीला है और जिन लोगों ने इसे देखा है उन्हें तुरंत पता है कि यह क्या कर रहा है।
एक और उल्लेखनीय उदाहरण " द ऑर्किश मेन्यूवर " है, जो सच्चे / झूठे, अमीर ऑपरेटरों और ऑपरेटर पूर्वता की धारणाओं का लाभ उठाता है।
एक जिसे मैं व्यक्तिगत रूप से काफी पसंद करता हूं वह कुछ हद तक ऑर्किश पैंतरेबाज़ी से संबंधित है, लेकिन मुझे इसके लिए कोई नाम नहीं पता है:
push @{ $some_hash{$key} ||= [] }, $some_value;
यह वास्तव में अड़चन नहीं है, बल्कि एक स्पष्ट, कॉम्पैक्ट अभिव्यक्ति है, जो अन्यथा करने के लिए कई लाइनें लेगा। यदि हैश में कुंजी मौजूद है और इसका वास्तविक मूल्य है, तो इसे एक सरणी के रूप में संदर्भित करें और उस सरणी पर $ some_value पुश करें। यदि हैश तत्व मौजूद नहीं है या गलत मान है, तो इसे खाली सरणी प्रदान करें, फिर उस सरणी को हटा दें और पुश करें।
यह भी ध्यान देने योग्य है कि पर्ल 5.14 के रूप में, इस मुहावरे का हिस्सा अप्रचलित है - पुश अब सरणी संदर्भ पर सीधे काम कर सकता है, नहीं @ {} की आवश्यकता है! इसके अलावा, पर्ल 5.10 के अनुसार, एक का उपयोग कर सकते हैं // = के बजाय = = जो सत्य के लिए नहीं बल्कि परिभाषित-नेस के लिए जाँच करता है।