टैब्स बनाम रिक्त स्थान - हर स्थिति में, कभी भी, हर चीज के लिए उचित इंडेंटेशन चरित्र क्या है? [बन्द है]


84

Drupal.org में होस्ट किए गए कोड के लिए कोडिंग मानक कोड को इंडेंट करने के लिए दो स्थानों का उपयोग करने का सुझाव देते हैं; अन्य साइटें कोड को इंडेंट करने के लिए टैब का उपयोग करने का सुझाव देती हैं।

हर चीज के लिए और हर स्थिति में उचित इंडेंटेशन चरित्र क्या है? कृपया आप जो उत्तर दें, उसे स्पष्ट करें।



13
IDE डिफ़ॉल्ट FTW - बस टैब कुंजी दबाएं और देखें कि क्या होता है
user281377

जो भी आप चुनते हैं, उसका उपयोग पूरी टीम द्वारा किया जाना चाहिए, लेकिन तब नहीं जब कोई अन्य स्थानों का उपयोग करता है।
शिष्य

1
मैंने इस निहितार्थ को ठीक करने के लिए इसे संपादित करने का प्रयास किया कि टैब / स्पेस इंडेंट कोड का एकमात्र तरीका है। संपादन हटा दिया गया था, लेकिन उम्मीद है कि यह टिप्पणी बनी रहेगी: इंडेंटेशन पात्रों के बजाय, बाएं-मार्जिन का उपयोग क्यों न करें? - यह संपादक द्वारा पूरी तरह से स्वचालित हो सकता है और वर्ड प्रोसेसर ने दशकों से ऐसा किया है।
21

4
मुझे नहीं लगता कि यहां "स्वीकृत" जवाब होना चाहिए। तथ्य यह है कि कम वोटों के साथ उत्तर वास्तव में पहले इस बात के लिए वसीयतनामा है: प्रश्नकर्ता को एक विशेष शक्ति क्यों मिलनी चाहिए (अर्थात पहले अपना पसंदीदा उत्तर देने में सक्षम होना चाहिए) क्योंकि उन्होंने सवाल पूछा था?
डीन हार्डिंग

जवाबों:


129

रिक्त स्थान

आपके परिवेश के आधार पर एक टैब एक अलग संख्या में कॉलम हो सकता है, लेकिन एक स्थान हमेशा एक कॉलम होता है।

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


42
आपका दूसरा पैराग्राफ गलत है; जवाब 4 है!
डेनिथ

5
@Dayyth - शायद अगर आप एक घुंघराले ब्रेस भाषा का उपयोग कर रहे हैं। अधिकांश पास्कल / डेल्फी 2 का उपयोग करता है
गेरी

72
जब TAB को गतिशील रूप से सेट किया जा सकता है और इंडेंटेशन के एकल स्तर का संकेत दे सकता है, तो मुझे आपके 2 या 4 इंडेंटेशन के लिए क्यों अनिवार्य किया जाना चाहिए?
Jé Queue

3
@MGOwen वेबसाइट कोडिंग के लिए डाउनलोड समय तर्क आजकल HTML पर css / javascript और व्हाट्सएप हटाने के स्रोत का उपयोग करके आसानी से हल किया जाता है। मेरा क्या अर्थ है, यह देखने के लिए mod_pagespeed देखें।
इवान प्लाइस

42
"आपके परिवेश के आधार पर एक टैब एक अलग संख्या में कॉलम हो सकता है" हां, यह बिल्कुल फायदा है। हर कोई इसे अपने स्वाद के लिए सेट कर सकता है और खुश हो सकता है।
एंड्रिया

249

टैब्स

अब, ज़ाहिर है, स्थिरता एक से अधिक मायने रखती है, और एक अच्छी आईडीई मतभेदों को नगण्य बनाती है। उस ने कहा, इस धागे की बात एक पवित्र युद्ध है, इसलिए:

मैं टैब पसंद करता हूं:

  • वे एक चरित्र विशेष रूप से इंडेंटेशन के लिए हैं
  • वे डेवलपर्स को इंडेंटेशन आकार में विभिन्न वरीयताओं के साथ बदलने की अनुमति देते हैं कि कोड को बदलने के बिना कोड कैसे दिखता है (लौकिक जीत के लिए डेटा और प्रस्तुति को अलग करना!)
  • टैब के साथ कुछ को आधा करना असंभव है। इसलिए जब आप किसी ऐसी वेबसाइट से कोड कॉपी करते हैं जो आपकी 4-स्पेस इंडेंट फाइल में 3 स्पेस का इस्तेमाल करती है, तो आपको मिसलिग्न्मेंट से निपटने की जरूरत नहीं है।

12
उस 3-स्थान इंडेंटेड कोड को आपकी टैब-इंडेंट फ़ाइल में कॉपी करने के बारे में क्या है, जिसे आपने अपने टैब को 3 स्थानों पर सेट किया है? जब आप अपने कोड को अपने हमवतन को भेजते हैं तो उन्हें आश्चर्य होता है कि उस समारोह में इतना बुरा आक्रोश क्यों है!
वेन वर्नर

27
टैब्स मूल रूप से इंडेंटेशन के लिए नहीं होते हैं, वे सारणीकरण के लिए होते हैं , और उस पर एक भयानक काम करते हैं ...
टिमवी

14
@ टिमीवी: विकिपीडिया कहता है कि वे कर्सर को निश्चित स्तंभों के एक सेट के अगले भाग में ले जाने के लिए हैं। सारणीयन की तरह ध्वनि नहीं है प्राथमिक कार्य था। इसके अलावा, मैं पोस्ट-टाइपराइटर युग की बात कर रहा था।
फिशटोस्टर

40
साथ ही बहुत सारे प्रोग्रामर html, css, आदि लिखने में एक महत्वपूर्ण समय बिताते हैं, इस तथ्य थे कि टैब के बजाय 4 रिक्त स्थान के साथ एक फ़ाइल 5-15% बड़ा है वास्तव में महत्वपूर्ण है। उदाहरण: इस पृष्ठ पर आप अभी कम से कम 10% धीमे लोड हैं क्योंकि इसमें एसई टीम ने रिक्त स्थान का उपयोग किया है । खुद के लिए जाँच करें।
MGOwen

23
इस दृष्टिकोण का एक और लाभ - बाएं-दाएं नेविगेशन के लिए तीर कुंजियों का उपयोग करते समय कम कुंजी।
निकोल

117

पंक्ति की शुरुआत, एक टैब प्रति इंडेंट स्तर पर इंडेंट करने के लिए टैब का उपयोग करें , और सभी को यह चुनने दें कि वे कितना विस्तृत होना चाहते हैं।

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

और सभी शुरुआती सॉफ़्टवेयर लेखकों को ढूंढें और पंच करें जो इस बेवकूफ चीज़ को पहली जगह में एक मुद्दा बनाते हैं।
(गंभीरता से, यह कुछ ऐसी बात भी है जिस पर चर्चा की जा रही है! आगे आपको बताऊंगा कि आप भी लाइन ब्रेक के लिए कई वर्णों का उपयोग करना चाहते हैं!)


33
हाँ हाँ हाँ हाँ हाँ। एक सौ प्रतिशत हाँ। यह सारणीबद्ध स्वरूपण को संरक्षित करते हुए सभी को अपनी-अपनी टैब चौड़ाई निर्धारित करने देता है। यदि आप 80 कॉलम के भीतर रखने के बारे में चिंतित हैं (जैसा कि आपको शायद होना चाहिए!) तो बस एक मनमाना अधिकतम अपेक्षित टैब आकार चुनें (जैसे 4) और उस चौड़ाई पर टैब के लिए मार्जिन के भीतर रखें। ईमानदारी से, क्या यह इतना मुश्किल है?
जॉन पूर्डी

हां, लेकिन एक पंक्ति के भीतर रिक्त स्थान का उपयोग न करें। आपके सहकर्मी एक आनुपातिक फ़ॉन्ट का उपयोग कर रहे होंगे, इसलिए आपकी ASCII कला उनके स्क्रीन पर अजीब दिखने वाली है।
पेपरजम

3
यहाँ केवल एकमात्र सही उत्तर है
J.Ashworth

76

टैब्स

  • गलतियों को अधिक ध्यान देने योग्य होने दें , यह रिक्त स्थान पर सूक्ष्म प्रबंधन के लिए कष्टप्रद है।
  • सुसंगत हैं , वे केवल इंडेंटेशन के लिए उपयोग किए जाते हैं, जब तक कि आप गलत टिप्पणी नहीं कर रहे हैं।
  • अनुकूलन योग्य हैं , आप संपादक के विकल्पों में निर्दिष्ट कर सकते हैं कि वे कितने विस्तृत हैं।
  • अधिक उत्पादक हैं , क्यों 4 स्थान टाइप करें जब आप 1 टैब हिट कर सकते हैं।
  • कई स्थानों से कम आकार लें।
  • एक जगह से अधिक जगह ले लो।
  • कम समय के माध्यम से जाने के लिए
  • आईडीई में बेहतर काम करते हैं।

उन जगहों का उपयोग किया जाना चाहिए जहां टैब पूरी तरह से बेकार हैं।

यहां तक ​​कि मापदंडों और टिप्पणियों को संरेखित करने के लिए, टैब अभी भी बेहतर काम करते हैं


24
wrt "अधिक उत्पादक", व्यक्तिगत रूप से मैंने TAB को हिट किया और IDE को लागू करने के लिए उचित संख्या में स्थान वर्णों के लिए रूपांतरण करने दिया। शायद आपको अपग्रेड करने की आवश्यकता है: पी?
Matthieu M.

3
-1: अधिक ध्यान देने योग्य गलतियाँ: सच नहीं; सुसंगत: मुश्किल से अनुकूलन के कारण: हाँ, लेकिन यह एक ही समय में नुकसान भी है; अधिक उत्पादक: सच नहीं है, वस्तुतः सभी आईडी टैब को रिक्त स्थान में बदल सकती हैं; कम आकार: हाँ, लेकिन व्यावहारिक? नहीं; कम समय: उचित आईडीई के साथ नहीं; बेहतर काम करते हैं: यदि आप कई वातावरण और उपकरणों का उपयोग नहीं करते हैं
MaR

@ एमआरआर: ध्यान देने योग्य गलतियाँ सच हैं, एक टैब की चौड़ाई बड़ी है। इसके अलावा ... अजगर! टैब एक एकल इंडेंटेशन के रूप में संगत हैं, जबकि आपको अन्यथा यह परिभाषित करना होगा कि आप इंडेंटेशन के लिए कितने रिक्त स्थान का उपयोग करेंगे। अनुकूलन एक फायदा है। आप पहले स्थान पर टैब का उपयोग कर रहे हैं, इसलिए यह अधिक उत्पादक है। लगता है कि आप एक अच्छा तर्क भी नहीं दे सकते कि यह अव्यवहारिक क्यों है, नफरत करने वाले नफरत करते हैं ...?)
तमारा विजसमैन

@TomWij: टैब कितने स्थानों के बराबर है? पायथन वस्तुतः एकमात्र भाषा है जिसे सुरक्षित रूप से टैब का उपयोग करने के लिए व्हॉट्सएप का अधिकार मिला (लेकिन अभी भी - यह "स्थान सम्मिलित करें" की तुलना में केवल बहुत कम लाभ प्रदान करता है)। अन्य भाषाओं को भी आज़माएं, विरासत का वातावरण, अंतर / विलय, टर्मिनलों, sccs यह देखने के लिए कि टैब अभी भी क्यों "आदर्श" हैं।
MaR

@ एमआरआर: मैंने 'स्पेस के समतुल्य संख्या' कहाँ से प्राप्त की? मैं उन सभी की कोशिश की है, टैब उन में पूरी तरह से काम!
तमारा विज्समन

41

टैब के सभी तर्क सिद्धांत रूप में महान हैं। परंतु...

सिद्धांत रूप में, अभ्यास और सिद्धांत समान हैं। व्यवहार में, वे नहीं हैं।

हां, टैब से आप अपना इंडेंटेशन लेवल तय कर सकते हैं। और हाँ, आप चीजों को संरेखित करने के लिए टैब और रिक्त स्थान के संयोजन का उपयोग कर सकते हैं। और एक आदर्श दुनिया में यह होगा

वास्तव में, आप रिक्त स्थान और टैब के बीच अंतर नहीं देख सकते हैं, वे हमेशा कोड को घुमाते समय मिश्रित होते प्रतीत होते हैं, और कोड को दूसरे प्रोग्राम में देखना जिसमें 8 कॉलम पर सेट टैब है, एक उपद्रव है।

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


6
आप केट जैसा एक संपादक पा सकते हैं जो एक 'भूत' चरित्र के साथ टैब प्रस्तुत करता है - मैं कोडिंग करते समय टैब बनाम स्थानों को आसानी से देख सकता हूं।
होरसकॉल

8
हर संपादक के पास अब एक "शो व्हॉट्सएप" विकल्प है, और विजुअल स्टूडियो में एक 'सारणीबद्ध' विकल्प है
क्रिस एस

2
अच्छा तर्क। यही कारण है कि मैंने लोगों को समझाने की कोशिश की कि टैब अधिक तार्किक हैं। यहां तक ​​कि प्रोग्रामर जिन्हें अमूर्त सोच के लिए इस्तेमाल किया जाना चाहिए, टैब और रिक्त स्थान को भ्रमित करने के लिए लगता है ("यदि यह चार रिक्त स्थान जैसा दिखता है, तो यह चार स्थान होना चाहिए!")। मेरे लिए ताबूत में कील यह था कि केवल टैब के साथ इंडेंट को इंडेंट को कॉन्फ़िगर करना असंभव लगता है।
मार्टिन विलकंस

3
+1 टैब यूटोपिया महान है, लेकिन हर बार जब मैंने संपादकों के बीच कोड को अलग-अलग टैब चौड़ाई के साथ स्थानांतरित किया तो कोड गड़बड़ हो गया है और गलत संदेश दिया गया है। चुपचाप टैब के साथ गलत काम करना बहुत आसान है।
मकार्से

मैं टैब का भी उपयोग करता था, लेकिन मैं कुछ आईडीई के साथ मुसीबत में चल रहा था जो निरंतरता लाइनों के लिए रिक्त स्थान नहीं डाल सकता था और मुझे उन सभी ऑटो-सम्मिलित टैब को रिक्त स्थान के साथ बदलने के लिए नफरत थी (विज़ुअल स्टूडियो उनमें से एक था)। तो मैं सिर्फ रिक्त स्थान के साथ चिपका रहा। प्लस स्पेस आपको public:सी ++ क्लास की घोषणाओं जैसी चीज़ों के लिए आधे आकार के इंडेंट का उपयोग करने की अनुमति देते हैं ताकि वे प्रीटियर दिखें (विशेषकर नॉर्थ क्लास के साथ)।
szx

31

105
सिर्फ इसलिए कि आप प्रसिद्ध हैं आपको सही नहीं बनाते हैं।
जे क्यू कतार

@Xepoch: क्या आपने उनका औचित्य पढ़ा है :)?
Matthieu M.

5
@ मैथ्यू एम।, हां मैंने प्रत्येक को पढ़ा है, लेकिन फिर भी मैं सहमत नहीं हूं। मुझे जैतून पसंद नहीं है, लेकिन मुझे गलत नहीं लगता क्योंकि दूसरे करते हैं। मुझे यह बहुत अजीब लगता है कि लोग इंडेंटेशन के लिए टैब का उपयोग नहीं करेंगे, लेकिन यही कारण है कि वे उन्हें सीएस पवित्र युद्ध कहते हैं ...
22

2
@Xepoch: हाँ, मुझे लगता है कि हर कोई किसी की राय का हकदार है :) मुझे लगता है कि हालांकि गुइडो ने मुख्य मुद्दा बताया है: टैब और स्पेस को मिलाना बुराई है, क्योंकि दोनों ही उपयोगकर्ता को "रिक्त स्थान" के रूप में दिखाई देते हैं।
मैथ्यू एम।

3
@ फ़िशटोस्टर: जब आप कहते हैं कि जोएल रिक्त स्थान कहता है, तो क्या लिंक एक वास्तविक जोएल उद्धरण के लिए नहीं होना चाहिए? यह लिंक सिर्फ जोएलऑनसेवर फोरम पर जाता है जहां कुछ पीपीएल (जोएल के लिए सबसे अधिक संभावना नहीं है) टैब बनाम रिक्त स्थान पर चर्चा करते हैं।
एंड्रियास मैग्यूसन


20

मैं पूरी तरह से। नफरत है। 4. रिक्त स्थान।

क्यों? मुख्य रूप से क्योंकि मैं एक कीबोर्ड के साथ अपने कोड को नेविगेट करने और left left left leftएक इंडेंटेशन पर जाने के लिए लगातार हिट करने के लिए थक गया हूं । यह नोटपैड ++ और यहां तक ​​कि सादे विंडोज नोटपैड के शुरुआती संस्करणों से बाहर पैदा हुआ था, जहां प्रारूप बटन जैसी कोई चीज नहीं थी। मेरे पास बहुत सारे मुद्दे थे जब लोग केवल 3 का उपयोग करेंगे जब मैंने अन्य चीजों के बीच हर जगह 4 का उपयोग किया था।

दूसरा कारण यह है कि टैब वर्ण विशेष रूप से इंडेंटेशन के लिए मौजूद है , और केवल बाद में नेविगेशन के लिए अपनाया गया था। space space space spaceजब कोई साधारण tabकाम करेगा तो हम क्यों कर रहे हैं ? जब एक साधारण टैब और वरीयता विकल्प काम करेगा, तो आईडीई को 2-5 स्थान कोड और प्रारूप से सही तरीके से क्यों निपटना चाहिए?

दुर्भाग्य से मैं अल्पसंख्यक हूं।


31
आप कीबोर्ड कोड ब्राउज़िंग में अक्षम हैं। आपको व्हाट्सएप और टोकन के माध्यम से छोड़ने के लिए CTRL + LEFT और CTRL + RIGHT का उपयोग करना चाहिए। इसलिए इंडेंटेशन कोई मायने नहीं रखेगा।
जादूगर '

7
यह गलत धारणा कहां से आई है कि "टैब विशेष रूप से इंडेंटेशन के लिए मौजूद हैं"? टैब को टैब (टैबलेटर) कहा जाता है क्योंकि उनका आविष्कार सारणीकरण के लिए किया गया था, न कि इंडेंटेशन , और वे दोनों पर एक भयानक काम करते हैं।
टिमवी

7
@ लोरेंजो: आप कीबोर्ड कोड ब्राउज़िंग में अक्षम हैं। आप का उपयोग करना चाहिए wऔर b(या eऔर ge) खाली स्थान के और टोकन के माध्यम से छोड़: पी
आर Martinho फर्नांडीस

6
शैतानी वकालत की खातिर: संपादकों पर बुरी तरह से स्वरूपित कोड को न डालें जो आप हीन समझते हैं। टैब का उपयोग करें।
जॉन प्यार्डी

11
@ टिमवी: नेक्रो के लिए खेद है, लेकिन सारणीयन के लिए कंप्यूटर टैब कुंजी का आविष्कार नहीं किया गया था। उस कुंजी का TYPEWRITER संस्करण था, लेकिन जब तक कंप्यूटर के साथ उपयोग के लिए कीबोर्ड विकसित किया गया, तब तक टैब कुंजी का उपयोग सारणीकरण से अधिक इंडेंटिंग के लिए किया गया था, और "टैब" शब्द इंडेंट का पर्याय बन गया था। COMPUTERS के लिए टैब इंडेंट करने के लिए हैं, और यह केवल कन्वेंशन द्वारा है कि टाइपराइटर की कुंजी का नाम मेल खाता है। आपका तर्क यह दावा करने के लिए समान है कि कंप्यूटर की वापसी कुंजी का उद्देश्य एक नई लाइन शुरू करना और कर्सर को बाईं ओर ले जाना है, क्योंकि यह वही है जो एक टाइपराइटर में था :)
Beofett

12

मैं व्यक्तिगत रूप से हर चीज में टैब का उपयोग करना पसंद करता हूं, क्योंकि प्रत्येक डेवलपर प्रति टैब इंडेंटेशन की मात्रा को नियंत्रित कर सकता है। इस तरह आपको डिस्प्ले में लचीलापन मिलता है।

कहा जा रहा है, मैं आमतौर पर जो भी कोडिंग शैली शुरू करने के लिए फ़ाइल में नकल करता हूं (चूंकि मैं रखरखाव कार्य करने में बहुत समय बिताता हूं)।


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

2
यह बिल्कुल भी थकाऊ नहीं है, क्योंकि इसका मतलब है कि आप वहां सबसे ज्यादा टैब कर सकते हैं और फिर सिर्फ सही कॉलम को पाने के लिए दर्जनों जगहों को टाइप करने के बजाय सिर्फ दो जगहों का इस्तेमाल करें।
जॉर्डन रीटर

1
@ यदि आप मानते हैं कि हर कोई एक मोनोस्पॉन्टेड फ़ॉन्ट का उपयोग कर रहा है - 2012 में, महत्वपूर्ण संख्या में देवता आनुपातिक का उपयोग करते हैं। यदि आपके पास अपने पहले तर्क के बाईं ओर गैर-व्हाट्सएप चार्ट है, तो बाद की तर्ज पर तर्कों की गारंटी देने का कोई तरीका नहीं है जो सभी के लिए संरेखित होगा।
पेपरजाम

आपने कभी भी एचएएमएल लिखने की कोशिश नहीं की, आपके पास है।
ऊँचाई

2
मुझे यह कहने से नफरत है, लेकिन मैं एक चर-चौड़ाई फ़ॉन्ट में प्रोग्रामिंग की कल्पना नहीं कर सकता। इसके बारे में सरासर गलतियाँ ब्रेस मानकों, टैब्स बनाम स्पेस, सब कुछ को बौना कर देती हैं ... क्या मैं अभी बूढ़ा हो रहा हूं? (जब आप एक पंक्ति और एक स्तंभ संख्या के साथ एक त्रुटि संदेश प्राप्त करते हैं तो क्या होता है?)
लंचमीट 317

10

मुझे नहीं लगता कि उचित इंडेंटेशन (कम से कम बिना मामूली युद्ध) जैसी कोई चीज है।

व्यक्तिगत रूप से मुझे चार स्पेस पसंद हैं। वे मुझे कोड को बहुत तेजी से पढ़ने में सक्षम करते हैं और वे प्रत्येक संपादक में समान दिखते हैं - यहां तक ​​कि वीआई भी।


9
vi (या बल्कि विम) टैब के साथ काम करने के लिए बेहतर संपादकों में से एक है, साथ ही टैब की चौड़ाई सेट करने में सक्षम है और स्वचालित रूप से रिक्त स्थान तक फैलता है (जैसे अधिकांश संपादक कर सकते हैं) आपके पास softtabstopविकल्प retabऔर retab!कमांड भी हैं।
फाइनव्यू

अगर हम सिर्फ 4 रिक्त स्थान, हर जगह, हमेशा, कोई विकल्प नहीं - और चले गए तो क्या बच्चे वास्तव में मर जाएंगे ?
MGOwen

2
हर जगह चार स्पेस एक जैसे नहीं दिखते। अधिक प्रोग्रामर अब अधिक सुखद और उत्पादक कोडिंग अनुभव के लिए अपनी IDE में आनुपातिक फोंट का चयन कर रहे हैं। चार रिक्त स्थान इन स्थितियों में बहुत छोटे इंडेंट की तरह दिख सकते हैं।
पेपरजाम

8

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

इसके अलावा, यह स्पष्ट रूप से स्पष्ट है कि दुनिया में हर किसी को विम का उपयोग करना चाहिए, जो इसे इंडेंट, अनइंडेंट के लिए तुच्छ बनाता है, और अंतरिक्ष-इंडेंटेड फाइलों में भी "टैब स्टॉप" के माध्यम से नेविगेट करता है।


यह कई संपादकों की एक अच्छी विशेषता है - रिक्त स्थान के टीले और टीले के माध्यम से जल्दी से जाने की क्षमता।
क्रिश्चियन मान

18
लगता है कि आप कोडिंग के बजाय ASCII कला खींच रहे हैं।
rmac

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

6

टैब प्राकृतिक और रूढ़िवादी पसंद हैं, क्योंकि वे इंडेंटेशन के लिए उपयोग की जाने वाली परिभाषा के अनुसार हैं।

दुर्भाग्य से, टैब असमान रूप से लागू किए जाते हैं, इसलिए एकमात्र वास्तविक विश्व समाधान 4 रिक्त स्थान है।


8
चूँकि टैब (टैबलेटर) इंडेंटेशन के लिए "डेफिनिशन" के लिए उपयोग किए जाते हैं ? उनकी बहुत परिभाषा के अनुसार उन्हें सारणीकरण के लिए आविष्कार किया गया था (हालांकि वे उस पर एक भयानक काम करते हैं)।
टिमवी

2
तकनीकी रूप से, वापसी कुंजी का आविष्कार लाइन के सामने की ओर टाइपराइटर के सिर को स्थानांतरित करने के लिए किया गया था, जबकि रोलर को घुमाकर अगली पंक्ति में स्थानांतरित किया गया था। बाद में, वापसी कुंजी स्वचालित रूप से रोलर को भी आगे बढ़ाएगी। यद्यपि आप लोगों को रिटर्न पर सभी लटकाए हुए नहीं दिखते / कुंजी दर्ज करते हैं। टैब कुंजी स्पष्ट रूप से कंप्यूटर पर इंडेंटेशन करने के लिए जोड़ी गई थी। यह टैब स्टॉप का एक डिजिटल एनालॉग है, जो मेरे पुराने गैर-इलेक्ट्रिक टाइपराइटर पर था। टैब स्टॉप रोलर को आपके द्वारा चुने गए किसी भी स्थिति में ले जाने के लिए सेट किया जा सकता है, जो इंडेंटेशन में टैब की वर्तमान भूमिका के लगभग समान है।
जॉर्डन रीटर

@JordanReiter RE: "आप लोगों को वापसी पर सभी को लटकाते हुए नहीं देखते हैं / हालांकि कुंजी दर्ज करते हैं।": क्या आपने कभी सीआर का सामना नहीं किया है (लाइन के सामने टाइपराइटर के सिर को हिलाने का प्रतिनिधित्व करता है) / एलएफ (रोलर को घुमाने का प्रतिनिधित्व करता है) अगली पंक्ति के लिए) मुद्दे?
मैक्स नानसी

1
हाँ, लेकिन यह वास्तव में एक OS मुद्दा है, न कि एक कीबोर्ड मुद्दा। कोई फर्क नहीं पड़ता कि आप किस कंप्यूटर पर हैं, आप अगले लिंक पर ले जाने के लिए या तो एंटर या रिटर्न कुंजी मारने की अपेक्षा करते हैं। आप एक पंक्ति फ़ीड जारी करने के लिए और एक गाड़ी वापसी जारी करने के लिए एक कुंजी का उपयोग नहीं करते हैं।
जॉर्डन रीटर

4

आपको स्पष्ट रूप से एक संयोजन दृष्टिकोण की आवश्यकता है।

यदि आप अन्य डेवलपर्स के साथ कोड साझा कर रहे हैं, तो आपको मानकीकरण करने की आवश्यकता है, और चूंकि यह असंभव है (koff koff), आपको सभी को चार स्थान बनाने की आवश्यकता है।

फिर आपको एक संपादक की आवश्यकता होती है जो उस बारे में बेवकूफ न होने के लिए पर्याप्त स्मार्ट है, यह जानने के लिए कि यह उसके सामने चार स्थानों के साथ एक पंक्ति का इलाज करना चाहिए जैसे कि यह इंडेंट है। किसी भी आधुनिक आईडीई या प्रोग्रामर के संपादक टैब के बजाय रिक्त स्थान के साथ ऑटो-फ्लो कोड कर सकते हैं।


4

कोई इसे क्यों लागू नहीं कर सकता:

  • कोड को एक कॉम्पैक्ट प्रारूप में संग्रहित किया जाता है जो सिस्टम के लिए फायदेमंद होता है
  • जैसा कि प्रत्येक देवता कोड खोलता है, यह बिल्कुल स्वरूपित है कि वे इसे कैसे चाहते हैं
  • जब वे इसके साथ समाप्त हो जाते हैं, तो कॉम्पैक्ट प्रारूप में वापस आ जाते हैं

हर कोई खुश है क्योंकि वे सभी अपने 'स्वयं' प्रारूप को देखते हैं

क्या यह इतना मुश्किल है?


2
क्योंकि मेरे पास सभी मौजूदा संपादकों और IDE को ठीक करने के लिए पर्याप्त खाली समय नहीं है जो लोग उपयोग करते हैं, और - भले ही मैंने किया हो - सभी को अपग्रेड करने के लिए आश्वस्त करना और भी कठिन होगा।
पीटर बॉटन

मुझे यकीन है कि वे इसे एसवीएन में बना सकते हैं या इसके अंत उपकरण को छोड़ने का कोई और तरीका खोज सकते हैं।
एडोल्फ लहसुन

13
टैब की तरह लगता है। प्रत्येक डेवलपर फ़ाइल को खोलता है और इंडेंटेशन चौड़ाई प्राप्त करना चाहता है।
rmac

1
आप indentप्रोग्राम का उपयोग करने के लिए पहले से ही आरसीएस या सीवीएस सेट कर सकते हैं ।
जेई क्यू

3
और इंडेंटिंग / कोड को गतिरोध के लिए बाध्य करने के लिए इंडेंट का उपयोग करने के लिए विवेकपूर्ण है ताकि मजाकिया रिक्ति विचारों के साथ देवों को दोष न मिले / उन सभी स्वरूपण परिवर्तनों के लिए एनोटेट न हो जाए
टिम विलिसक्रॉफ्ट

3

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

उस ने कहा, यदि आप पायथन या किसी अन्य भाषा में काम कर रहे हैं, जहां व्हाट्सएप एक वास्तविक प्रोग्रामिंग निर्माण है, तो मैं टैब का उपयोग करने की कल्पना नहीं कर सकता।


4
मैं टैब का उपयोग करता हूं। मुझे नहीं पता कि आपने कोई पायथन प्रोग्रामिंग की है, लेकिन यह सापेक्ष इंडेंटेशन है जो मायने रखता है। यदि लाइन 1 में x इंडेंट है, और लाइन 2 में x + 1 इंडेंट है, तो इसे अधिक इंडेंट माना जाता है। संकेत दोहरे स्थान, 4 स्थान, टैब हो सकते हैं, जब तक आप सुसंगत हैं, तब तक कोई फर्क नहीं पड़ता।
माचा

@ माचा - प्रतिक्रिया के लिए धन्यवाद। मैंने कभी भी पायथन विकास करने का काम नहीं किया है, लेकिन मेरे जो सभी ने मुझे बताया है कि वे रिक्त स्थान का उपयोग करते हैं, इसलिए किसी ऐसे व्यक्ति से मिलना दिलचस्प है जो टैब का उपयोग करता है।
नूह गुडरिक

3
मैं काम में अजगर के साथ टैब का उपयोग करता हूं। यह भयंकर है।
15

3

मैं एक 4 तरह का आदमी हूं, टैब सिर्फ संगत नहीं हैं।


5
वे "सुसंगत नहीं" कैसे हैं? वे हमेशा एक एकल चरित्र होते हैं जो इंडेंटेशन के एकल स्तर का प्रतिनिधित्व करते हैं। यह एक निरंतर इंडेंटेशन योजना की परिभाषा है। (और यह कि आप व्यक्तिगत रूप से, किसी और को प्रभावित किए बिना, नेत्रहीन रूप से प्रस्तुत कर सकते हैं कि आपके द्वारा चुना गया कोई भी तरीका एक प्लस है ।)
ऑर्बिट

3

जाहिरा तौर पर डेल्फी में गड़बड़ सामान टैब मैं तो डेल्फी में टैब का उपयोग नहीं करते।

हालाँकि मैं Emacs का उपयोग करके सब कुछ करता हूं और हमेशा टैब का उपयोग करता हूं क्योंकि मेरे टैब ठीक उसी जगह जाते हैं जहां मैं चाहता हूं कि वे जाएं।


क्या आप इसका एक उदाहरण प्रदान कर सकते हैं? मैं ईमानदारी से उत्सुक हूं क्योंकि मैं 15 साल से डेल्फी का उपयोग कर रहा हूं और यह कभी नहीं देखा।
ग्रैंडमास्टरबी

1
edn.embarcadero.com/article/10280#4.3 यह सिर्फ स्टाइल गाइड है, लेकिन हमारे पास कुछ अजीब त्रुटियां हैं जिन्हें मैं टैब के कारण समझा नहीं सकता। यह विजुअल सोर्स सेफ के कारण भी हो सकता है। मैं इसे समझा नहीं सकता, यह हमारी कंपनी के विद्या का हिस्सा है।
पीटर टर्नर

1
समस्या यह है कि डेल्फी के कुछ संस्करणों के लिए इंस्टॉलेशन डिफॉल्ट सामान्य डेल्फी मुहावरों से मेल नहीं खाता है। तो आप उस कोड के साथ समाप्त होते हैं जिसमें BOTH है।
गेरी

3

इसका उत्तर यह है कि हर स्थिति के लिए एक ही उचित इंडेंटेशन चरित्र नहीं हो सकता है। वर्णों का उपयोग करते हुए स्वरूपण अनम्य है और जब किसी टीम के भीतर विभिन्न शैलियों का उपयोग किया जाता है तो यह संघर्ष का कारण बन सकता है।

कोड को त्रुटिपूर्ण और लचीले ढंग से अलग-अलग प्रारूपण शैलियों के साथ प्रारूपित करने का एकमात्र तरीका यह है कि इसे वस्तुतः, अर्थात् बिना किसी इंडेंटेशन वर्ण के किया जाए। एकमात्र कोड संपादक जो मुझे पता है कि इसका समर्थन करता है, हालांकि नीचे दिए गए नमूने में इसका उपयोग किया गया है:

आभासी स्वरूपण को प्रदर्शित करने के लिए , नीचे दिया गया स्क्रीनशॉट एक XSLT संपादक से है जो इस इंडेंटेशन विधि का उपयोग करता है (यहां एक छोटा वीडियो भी है )। XSLT में प्रत्येक चरित्र को पीले रंग में चित्रित किया गया है, उदाहरण के लिए, सामग्री में एकमात्र टैब या स्थान वर्णों को स्पष्ट रूप से देखने की अनुमति देने के लिए। कोड इंडेंटेशन को संपादक के रेंडरिंग सिस्टम ने बाएं मार्जिन (जिसमें एक सफेद पृष्ठभूमि है) को समायोजित करके नियंत्रित किया है।

यहाँ छवि विवरण दर्ज करें

केवल प्रमुख अंतरिक्ष वर्ण ही बुक्स लाइनों को पसंद करते हैं, क्योंकि यह शाब्दिक पाठ सामग्री है, कोड नहीं, इन अंतरिक्ष वर्णों को संरक्षित किया जाना चाहिए।

वर्चुअल स्वरूपण के साथ आप स्रोत फ़ाइल में किसी भी वर्ण को प्रभावित किए बिना पर्यावरण और इंडेंटेशन शैली के अनुरूप इंडेंटेशन चौड़ाई चुनते हैं। आप इंडेंटेशन चौड़ाई को 0 पर भी सेट कर सकते हैं, अगर आपको नीचे दिखाए अनुसार कोड का एक चपटा दृश्य चाहिए:

यहाँ छवि विवरण दर्ज करें

अंतरिक्ष वर्ण प्रारूपण के साथ इसके विपरीत, आभासी स्वरूपण के बिना संपादक में खोले गए समान XSLT को उस संपादक के ऑटो-फ़ॉर्मेटर द्वारा इस में बदल दिया जाता है:

यहाँ छवि विवरण दर्ज करें

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

सारांश

XSLT संभवतः एक चरम मामला है, लेकिन यह सिद्धांत कई प्रोग्रामिंग भाषाओं के लिए सही है: वर्णों का उपयोग सामग्री के लिए किया जाना चाहिए और एक वैकल्पिक विधि की आवश्यकता होती है जब यह स्वरूपण की बात आती है।

** प्रकटीकरण: आभासी प्रारूपण के साथ XSLT संपादक मेरी अपनी कंपनी द्वारा विकसित किया गया था *


1
अफसोस की बात है कि आप अपने समय से लगभग 50 साल आगे हैं। स्पष्ट रूप से बेतुका विचार है कि कार्यक्रम पात्रों के अनुक्रम हैं, अभी भी अधिकांश प्रोग्रामर के दिमाग में बहुत गहराई से जुड़ा हुआ है।
टॉम एंडरसन

3

अब तक उल्लेख नहीं किया गया है: वहाँ भाषाएँ (पायथन, हास्केल) हैं जहां इंडेंटेशन मायने रखता है। लेकिन 1 वर्ण 1 वर्ण के रूप में गिना जाता है, यह एक स्थान या टैब हो सकता है इसलिए संकलक द्वारा देखा गया इंडेंटेशन वही नहीं हो सकता है जिसे आप स्क्रीन पर देखते हैं यदि आप टैब का उपयोग करते हैं।

इसलिए, हास्केल जैसी भाषाओं में, रिक्त स्थान एक होना चाहिए। Makefiles में, TABS एक होना चाहिए। अन्य सभी में, यह व्यक्तिगत स्वाद की बात है और आजकल बहुत बड़ी बात नहीं है - प्रत्येक सभ्य संपादक के पास "(प्रमुख) स्थान से टैब" और "(अग्रणी) स्थान से टैब तक" कमांड है।


2

मैं रिक्त स्थान का उपयोग करता था, लेकिन मैं हाल ही में विशुद्ध रूप से टैब का उपयोग कर रहा हूं क्योंकि यही वह ग्रहण है जब मैंने अंततः देखा था। मेरी टीम के अन्य सभी डेवलपर्स एक्लिप्स का उपयोग करते हैं, इसलिए इसका मतलब यह था कि जब हम पहले से ही उन्हें उम्र के लिए इस्तेमाल कर रहे थे और स्थानों पर बदलने के लिए परेशान करने का कोई कारण नहीं था, तब हमें टैब पर मानकीकृत करने का कोई मतलब नहीं था। मुझे आश्चर्य हुआ है कि यह कितना गैर-मुद्दा है।

आपके IDE में प्रदर्शित टैब आकार को 3 या 5 वर्णों पर सेट करना बहुत ही कोड अनुभागों के बीच भेद करने को सरल बनाता है जो रिक्त स्थान (लगभग हमेशा इन दिनों 4) से प्रेरित होते हैं और जो टैब द्वारा इंडेंट किए जाते हैं।


1

बहुत सारी दलीलें पहले ही दी जा चुकी हैं, लेकिन किसी ने भी यह उल्लेख नहीं किया है कि भविष्य में हम कहाँ जा सकते हैं

टैब्स और न ही रिक्त स्थान!

आदर्श रूप से कोड को डेटा माना जाना चाहिए, और किसी भी विशिष्ट पाठ प्रारूपण में संग्रहीत नहीं किया जाना चाहिए। कोई भी डेवलपर अपना पसंदीदा दृश्य लागू कर सकता है। इसके अलावा, यह दृश्य केवल पाठ तक सीमित नहीं होना चाहिए , लेकिन इसमें टेबल, रंग बीनने वाले और गणितीय सूत्र शामिल हो सकते हैं।

यह विचार बहुत दूर की कौड़ी नहीं है। यह JetBrain की लैंग्वेज ओरिएंटेड प्रोग्रामिंग एडिटर मेटा प्रोग्रामिंग सिस्टम (MPS) था जिसने मुझे पहली बार एहसास कराया कि यह पूरी चर्चा को हल करता है, साथ ही साथ इसमें बहुत सारी अतिरिक्त संभावनाएँ भी शामिल हैं। (हाँ यह संपादक प्लगइन्स के साथ संभव है, लेकिन एमपीएस के दृष्टिकोण के विपरीत पाठ पर काम करना सीधे तौर पर बहुत सारी अनावश्यक जटिलताओं को जोड़ता है।)

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

मैं बड़े खिलाड़ियों में से एक को इस तकनीक की अवधारणा पर कूदते हुए देखना पसंद करता हूं और देखें कि क्या होता है!


0

न तो बेहतर है, न ही इससे भी बदतर है। एकमात्र महत्वपूर्ण चीज सुसंगत होना है।

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

यदि आप किसी टीम में हैं, तो वही करें जो टीम करती है। अवधि।

अपनी विभिन्न नौकरियों में मैंने दो स्पेस, चार स्पेस, आठ स्पेस, टैब, स्पेस और टैब का इस्तेमाल किया है, मुझे लगता है कि मैंने भी एक स्पेस का इस्तेमाल किया होगा। मैं अपने संपादक को बताता हूं कि मुझे क्या करना है, मैं इसके बारे में फिर से नहीं सोचता, संपादक विवरण तैयार करता है।

केवल दूसरी चीज यह सुनिश्चित करना है कि आप एक स्मार्ट संपादक चुनें। Emacs या vi? अब वह एक पवित्र युद्ध मैं लड़ने के लिए तैयार हूँ :-)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.