2009-11-23 12 views
5

मैं समझता हूं कि Smart :: टिप्पणियां उत्पादन कोड में उपयोग नहीं की जानी चाहिए, क्योंकि यह एक स्रोत फ़िल्टर है।अगर मैं विकास कोड में स्मार्ट :: टिप्पणियों का उपयोग करता हूं तो मुझे क्या चिंताएं होनी चाहिए?

हालांकि, मैं अपने विकास कोड में Smart::Comments का उपयोग कर रहा हूं और फिर उत्पादन में कोड भेजने से पहले "उपयोग" लाइन पर टिप्पणी कर रहा हूं।

यह देखते हुए कि मैं इसे अपने विकास कोड में उपयोग करने जा रहा हूं, मुझे विशेष रूप से किस बारे में चिंतित होना चाहिए? मैंने इंटरनेट की खोज की है और मुझे कोई कारण नहीं मिला है कि मुझे चिंतित होना चाहिए सिवाय इसके कि स्रोत फ़िल्टर "एक बुरा विचार" या "बुरा" है या उन्हें कभी भी उत्पादन कोड में उपयोग नहीं किया जाना चाहिए।

अद्यतन: मैं अब सिनान Unur के दृष्टिकोण को लागू करने के लिए एक महत्वपूर्ण vim में बाध्यकारी उपयोग कर रहा हूँ:

map <Leader>c <Esc>:!perl -MSmart::Comments %<CR> 
+1

दाओटोड की सामुदायिक विकी भी देखें जो उन्होंने इस प्रश्न का उत्तर देने के बाद खोला: http://stackoverflow.com/questions/1785852/why-are-perl-source-filters-bad-and-when-is-it-ok करने के लिए उपयोग-उन्हें। –

+0

[2015 पर पर्ल एडवेंट आलेख स्मार्ट :: टिप्पणियां] देखें (http://www.perladvent.org/2015/2015-12-11.html) –

उत्तर

4

स्रोत फिल्टर बुरा समस्याग्रस्त हैं, क्योंकि वे अपने कोड के पुनर्लेखन के लिए एक अपूर्ण पार्सर का उपयोग करें। सबकुछ बढ़िया काम करता है, जब तक फ़िल्टर उस कोड को प्रबंधित करता है जिसे आप इसे खिलाते हैं।

जिस क्षण आप फिल्टर को तोड़ने वाले कुछ जोड़ते हैं, पूरी प्रणाली स्वयं को नष्ट कर देती है और आपको विचित्र बग मिलती है।

स्रोत फ़िल्टर डीबगर को भी भ्रमित करते हैं, जो एक समस्या हो सकती है - यदि आप डीबगर का उपयोग करते हैं।

2

मुझे स्रोत-फ़िल्टर भाग पर कोई राय नहीं है। लेकिन बस Smart::Comments के सारांश देखें। वे स्मार्ट हो सकते हैं, लेकिन जो आप समाप्त करते हैं उसे शायद ही कभी "टिप्पणियां" कहा जा सकता है। यदि आपको प्रगति पट्टी की आवश्यकता है, तो आगे बढ़ें, एक स्पष्ट रूप से जोड़ें। अगर आपको कुछ टिप्पणी करने की ज़रूरत है, तो इसे इस तरह से करें कि आपके अगले स्रोत को पढ़ने वाले अगले व्यक्ति को समझें कि आपका क्या मतलब है।

1

स्मार्ट :: टिप्पणियां विशेष रूप से इस तरह से लिखी जाती हैं कि जब आप "स्मार्ट :: टिप्पणियों का उपयोग करें" पर टिप्पणी करते हैं तो यह केवल टिप्पणियां होगी, इसलिए कार्यक्रम बिल्कुल प्रभावित नहीं होता है। अन्य मॉड्यूल में अधिक गंभीर समस्याएं होती हैं, जैसे कि जब आप त्रुटि की सटीक रेखा संख्या प्राप्त नहीं कर पाएंगे। मेरी कोड में

use Smart::Comments; 

:

9

मैं डाल करने के लिए नहीं पसंद करते हैं। जब मैं वास्तव में Smart::Comments प्रयोग करते हैं, मैं स्क्रिप्ट का उपयोग आह्वान:

$ perl -MSmart::Comments test.pl 

इस तरह, वहाँ कोई मौका नहीं Smart::Comments उत्पादन कोड में उपयोग किया जाएगा है।

+1

++! मैंने अक्सर एस :: सी देखा है और कामना की है कि मैं स्रोत फिल्टर से कुल रोकथाम में विश्वास नहीं करता था। यह एस :: सी का उपयोग करने का एक सुरक्षित तरीका प्रदान करता है - अब मैं वास्तव में उनका उपयोग कर सकता हूं। – daotoad

+0

धन्यवाद! अच्छी एप्रोच। –

5

मैं स्मार्ट :: टिप्पणियों का एक बड़ा प्रशंसक हूं, और इसे हमारे कोड, विकास और उत्पादन प्रतियों में बुलाया जाता है। मैं इसे शायद ही कभी प्रगति-सलाखों के लिए उपयोग करता हूं, ज्यादातर दावे और डीबग आउटपुट के लिए।

हालाँकि, व्यवहार फ़ॉर्म का उपयोग करके यह खींचने के लिए है:

use Smart::Comments -ENV; 

वातावरण चर Smart_Comments सेट नहीं है, स्मार्ट :: टिप्पणियाँ पूरी तरह से निष्क्रिय है।

दोनों दुनिया के सर्वश्रेष्ठ।

+0

धन्यवाद! ऐसा करने का एक और तरीका है। –

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

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