(बिंदु-मिनट) 1 से अधिक लोकप्रिय क्यों है?


16

मैंने Emacs Git repo में सभी Emacs Lisp फ़ाइलों के पार खोजा, और पाया कि (goto-char (point-min))3621 बार और (goto-char 1)31 बार होता है। व्यक्तिगत रूप से, मैं बहुत सारे देखता हूं, (point-min)लेकिन 1कई मामलों में भी, यह 100% सुनिश्चित है कि क्षेत्र संकुचित नहीं है। तो यहाँ मेरा सवाल है: (point-min)अभी 1भी संयुक्त राष्ट्र के संकीर्ण बफर में भी पसंद किया जाता है ?

मुझे लगता 1है कि तेजी से है (point-min), कोई मैटर कितना मामूली है, क्योंकि एक फ़ंक्शन कॉल के 1दौरान स्थिर (point-min)है। इसके अलावा, 1 वर्ण बनाम 11 वर्णों 1से बहुत छोटा है (point-min)


2
क्या आप एक उदाहरण प्रदान कर सकते हैं जहां "यह 100% सुनिश्चित है कि क्षेत्र संकुचित नहीं है '? मुझे लगता है कि आप व्यापक होने के तुरंत बाद मतलब है? क्या यह वास्तव में" कई मामले "हैं?
उमर

1
मैंने हमेशा सोचा था कि बफर 0 से शुरू होता है ...
ओमैर माजिद

जवाबों:


28

आप कैसे जानते हैं कि बफर संकरा नहीं है?

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

कोड पठनीयता राजा है

जब आप लिखते हैं (goto-char 1), तो कोड पढ़ने वाला व्यक्ति (6 महीने बाद आप सहित) कीमती दिमागी सोच खर्च करेगा

  • "हम कैसे जानते हैं कि बफर संकरा नहीं है?" तथा
  • "पहला वर्ण 0 या 1 है?"

मूल रूप से, जब तक आपके पास (widen)पहले से ठीक नहीं है, आपको यह समझाने की टिप्पणी की आवश्यकता है कि आपको विश्वास क्यों है कि बफर संकुचित नहीं है।

लागत तुच्छ है

जब तक आपने अपने कोड को प्रोफाइल नहीं किया है और अन्यथा नहीं पाया है, एक सुरक्षित धारणा यह है कि यहां की लागत तुच्छ होगी। अन्य सभी चीजों की तुलना में ELisp करता है (नेटवर्क, डिस्क एक्सेस, यहां तक ​​कि स्ट्रिंग मिलान), (point-min)एक सार्थक लागत नहीं होगी (और सस्ता भी हो सकता है , स्टीफन का जवाब देखें)।


2
+1, विशेष रूप से अप्रत्याशित तरीकों से संभावित उपयोग पर जोर देने के लिए, और अन्य संदर्भों में संभव पुन: उपयोग के लिए। एक फ़ंक्शन जो point-minआमतौर पर उपयोग करता है वह एक से अधिक सामान्य है 1- यह आमतौर पर काम कर सकता है कि क्या क्षेत्र संकुचित है या नहीं।
ड्रू

19

उपस्थिति के बावजूद, एसडी के उत्तर को पूरक करने के लिए (जिसके साथ मैं पूरी तरह सहमत हूं) (point-min)से अधिक कुशल हो सकता है 1। निष्पादन की गति के संदर्भ में, मेरे परीक्षणों में कोई औसत दर्जे का अंतर नहीं दिखता है, लेकिन आकार के संदर्भ में:

ELISP> (byte-compile '(lambda () (goto-char (point-min))))
#[nil "eb\207" [] 1]

ELISP> (byte-compile '(lambda () (goto-char 1)))
#[nil "\300b\207" [1] 1]

ELISP> 

ऐसा इसलिए point-minहै क्योंकि इसका अपना बाइट-कोड है, और इसलिए इसे अन्य फ़ंक्शन कॉल की तुलना में बहुत कुशलता से एन्कोड और निष्पादित किया गया है।

बेशक, मेरे उपयोग करने का एक और कारण point-minयह है कि मैं ऐतिहासिक विकल्प 1को एक गलती मानता हूं (बफ़र्स 0 पर शुरू होना चाहिए था)।


2
आपके द्वारा दिया जाने वाला कारण केवल यह है कि बाइट कोड point-minथोड़ा छोटा है? एक सुंदर paltry कारण की तरह लगता है। उसको महत्व क्यों देते हैं? या हो सकता है कि आपका जवाब वास्तव में एक टिप्पणी के रूप में था , इस धारणा को ठीक करने के लिए कि एक दूसरे की तुलना में अधिक उत्कृष्ट है या इसके 1परिणामस्वरूप छोटे बाइट कोड हैं?
आकर्षित किया
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.