इष्टतम कोड चौड़ाई पर अध्ययन?


131

यदि आप अपनी पसंद के IDE में "व्यू राइट मार्जिन" को सक्षम करते हैं, तो संभावना है कि यह 80 वर्णों के लिए डिफ़ॉल्ट होगा। मैं इसे बिना किसी कारण के 120 के लिए बदल देता हूं क्योंकि यह एक कंपनी में मानक था जो मैं कुछ साल पहले था, और किसी अन्य कंपनी ने मुझे इसे अलग तरीके से करने के लिए नहीं कहा है।

मेरा सवाल यह है कि क्या कोई अध्ययन है जो वास्तव में कोड पठनीयता के लिए अधिकतम अधिकतम चौड़ाई होने के लिए 80 अक्षर दिखाते हैं, या क्या यह मूल्य सिर्फ एक "यह है कि यह हमेशा रहा है" और कोई भी वास्तव में नहीं जानता कि यह ऐसा क्यों है? और, क्या कोड की एक पंक्ति की चौड़ाई आपके कोडिंग मानक का हिस्सा होनी चाहिए?


1
जब मुझे किसी भी अध्ययन का पता नहीं है, तो आपको इस प्रश्न के उत्तर के रूप में बहुत सारी राय मिलेंगी: * क्या एक कोड फ़ाइल, इस दिन और उम्र में 80 वर्णों की अधिकतम चौड़ाई लागू करने का एक वैध कारण है?
एडम बेलायर

3
कोई अध्ययन नहीं जो मुझे पता है, लेकिन आपको विभिन्न परियोजनाओं के कोडिंग मानकों को देखना दिलचस्प लग सकता है। उदाहरण के लिए Google के 80 अक्षर हैं। ( code.google.com/p/google-styleguide ) जहाँ WebKit (ala Apple!) के रूप में AFAIK ( webkit.org/coding/coding-style.html ) की कोई सीमा नहीं है । मोज़िला 80 प्रतीत होता है ( developer.mozilla.org/En/Mozilla_Coding_Style_Guide#Line_length )
gman

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

जवाबों:


116

दरअसल, 80-कॉलम वाली चीज़ डीओएस से पहले लंबी होती है। यह कार्ड पंचों से आता है, जो 80-कॉलम डिवाइस थे।

और ओपी के सवाल का जवाब देने के लिए, एक "अध्ययन" लगभग 600 वर्षों से चल रहा है - मुद्रित पुस्तक। ये सदियों से विकसित हुए हैं, मन में तत्परता के साथ, अब हम उस स्थिति में हैं जहां पाठ के लिए औसत पंक्ति की लंबाई लगभग 60 अक्षर है। तो पठनीयता के लिए, संकीर्ण मार्जिन के लिए जाएं।


85
मैं वास्तव में विश्वास नहीं करता कि आप प्रयोज्य के संदर्भ में एक प्रोग्रामिंग भाषा पढ़ने के साथ प्राकृतिक भाषा पढ़ने की तुलना कर सकते हैं।
१४:१२

25
@Frug - वास्तव में, आप शायद कर सकते हैं। 65 वर्णों की चौड़ाई का कारण यह नहीं है कि बड़ी रेखाओं को पढ़ा नहीं जा सकता है, लेकिन जब आंख अगली पंक्ति में जाती है तो यह एक आर्क को बहुत तंग करती है। आप इसके चारों ओर लाइन की ऊँचाई बढ़ाकर प्राप्त कर सकते हैं, लेकिन इससे ब्लॉक स्पेस का उपयोग करना मुश्किल हो जाता है, जिससे अर्थ का विस्तार होता है, इसलिए शायद यह एक आईडीई से बचने के लिए कुछ है।
जिमी ब्रैक-मैकके

32
@ जिम - मेरी प्राकृतिक भाषा में 30 अक्षरों वाले शब्द नहीं हैं (ऐसा नहीं है कि मैं वैसे भी उपयोग करता हूं) और यह प्रोग्रामिंग भाषा की तुलना में पूरी तरह से अलग है। आप अक्सर बाकी हिस्सों से अलग कोड की एक पंक्ति बना सकते हैं, यह एक लंबी सशर्त या लंबी विधियों और कक्षाओं का एक संयोजन हो सकता है। इसे इंडेंटेशन के साथ मिलाएं और दो भाषाओं के बीच तुलना बेतुकी हो जाती है। मुझे कोई संदेह नहीं है कि वैज्ञानिक रूप से पठनीयता और लाइन की लंबाई का अध्ययन करने से मतभेदों पर आपके धोने पर आपत्ति होगी।
फ्राग

10
@ फ़रग - मैं वास्तव में यह नहीं देखता कि आपके द्वारा किए गए किसी भी दावे के साथ आपकी आपत्तियां कैसे जुड़ी हैं, लेकिन मैं देख सकता हूं कि इंडेंटेशन मेरे द्वारा प्रस्तावित मॉडल को तोड़ता है। हालांकि मुझे 'जिम' मत कहो।
जिमी ब्रेक-मैके

17
एक पुस्तक को आम तौर पर एक मॉनिटर की तुलना में आंखों के बहुत करीब रखा जाता है, जिसका अर्थ है कि प्रति पंक्ति कम वर्णों की अनुमति है यदि पाठक को गर्दन को क्रेन किए बिना पुस्तक को पढ़ने में सक्षम होना है। एक स्क्रीन को आम तौर पर एक पुस्तक की दूरी पर नहीं रखा जाता है, जिसका अर्थ है कि अधिकतम आंख कोण की सीमाओं के भीतर रखते हुए प्रति पंक्ति अधिक वर्णों का उपयोग किया जा सकता है। इसके अलावा, कोड को उतना नहीं पढ़ा जाता है जितना कि इसका उपयोग किया जाता है, जिससे यह चौड़ाई कम महत्वपूर्ण हो जाती है। मैं (YMMV) आसानी से अपने लैपटॉप स्क्रीन पर कोड के 120 अक्षरों के साथ लाइनों का पालन कर सकता हूं, लेकिन यह मेरे 15 "लैपटॉप,
अलास

104

प्रोग्रामर पर दया करें जिन्हें बाद में आपके सॉफ़्टवेयर को बनाए रखना है और 80 अक्षरों की सीमा तक रहना है।

पसंद करने के कारण 80:

  • लैपटॉप पर एक बड़े फ़ॉन्ट के साथ पठनीय

  • तुलना के लिए दो संस्करणों को एक साथ रखने के लिए जगह छोड़ता है

  • IDE में नेविगेशन दृश्य के लिए स्थान छोड़ता है

  • मनमाने ढंग से टूटने वाली लाइनों के बिना प्रिंट (ईमेल, वेब पेज, ... पर भी लागू होता है)

  • एक लाइन में जटिलता को सीमित करता है

  • इंडेंटेशन को सीमित करता है जो बदले में तरीकों / कार्यों की जटिलता को सीमित करता है

हां, यह कोडिंग मानक का हिस्सा होना चाहिए।


10
80 वर्ण या उससे कम की लाइन की चौड़ाई रखने के लिए ये महान कारण हैं। मैं वास्तव में हैरान (निराश) हूं कि आपके उत्तर, जिसे स्पष्ट रूप से सही और सही समझा गया है, को अधिक अंक नहीं मिले। इस सूची में, मैं जोड़ूंगा: (1) क्षैतिज स्क्रॉलिंग कोई मज़ा नहीं है। (२) जिस कोड पर आप काम कर रहे हैं, उस घनत्व को आप बहुत से कोलमों में देख कर बढ़ा सकते हैं। अचल संपत्ति का एक बड़ा सौदा तब बर्बाद हो जाता है जब आपके पास कुछ पंक्तियां होती हैं जो दूर तक दाईं ओर विस्तारित होती हैं जब अधिकांश अन्य लाइनें नहीं होती हैं।
डॉनी कैमरन

4
ठीक है लेकिन क्या होता है जब कुछ इंडेंटेशन के साथ कोड का एक ब्लॉक होता है? मेरे साथ ऐसा हुआ है और 80 किरदार मज़ेदार नहीं हैं।
EKanadily

14
Limits the complexity in one lineमुझे यकीन नहीं है कि कई लाइनों में जटिलता फैलाना बेहतर क्यों है। यह सिर्फ आपके मानसिक ढेर पर अधिक धकेलता है।
जोनाथन

4
यह बहुत पुराना विषय है। लेकिन क्या आप अब भी इस बात से सहमत हैं कि डेवलपर्स का भार 27 इंच के मॉनिटर :-) का उपयोग करता है। मेरा मतलब है कि अगर दृष्टि एक मुद्दा है तो बड़ी स्क्रीन मदद कर सकती है। 8 साल पहले हम अभी भी 17 या 20 इंच के मॉनिटर पर काम कर रहे थे और कुछ 4: 3 के प्रस्तावों पर भी।
मैथिज सीजर्स

1
मॉनिटर या आकार की परवाह किए बिना @MathijsSegers, दृष्टि के अपने क्षेत्र के मध्य 30 डिग्री के भीतर पाठ रखने के लिए अभी भी अधिक आरामदायक है। जब साइड-बाय-साइड मॉनिटर में कई विंडो काम करती हैं, तो मैं एक से दूसरे को देखने के लिए अपना सिर घुमाता हूं। एक व्यक्ति को एक पंक्ति के एक छोर से दूसरे छोर तक पढ़ने के लिए अपना सिर मोड़ना नहीं चाहिए या अपनी आंखें पूरी तरह से घुमाना नहीं चाहिए। बहुत तेजी से आँख या सिर घूमने से शायद पूरे दिन में चक्कर लग जाएँ।
मौरिस

41

मेरे पास पढ़ाई नहीं है, लेकिन मैं अपने अनुभव से संबंधित हूं।

मुझे लगता है कि पाठ के साथ काम करते समय क्षैतिज स्क्रॉल थकाऊ है । मैं पर्यावरण को देखता हूं कि कोड का उपयोग उस संदर्भ के आधार पर चौड़ाई मानकों में किया जाएगा और सेट किया जाएगा।

उदाहरण के लिए, जब मैंने XWindows पर Emacs में काम किया, तो हर समय 2 Emacs खिड़कियों के साथ- साथ काम करना अच्छा था । इसने उन्हें 80 वर्णों तक सीमित कर दिया, इसलिए यह मेरी अधिकतम लंबाई थी।

एक बिंदु पर मैंने 1920x1200 स्क्रीन पर विजुअल स्टूडियो में काम किया। मैं इसे अधिकतम रखना चाहूँगा, सभी टूल विंडो एक तरफ नीचे की ओर। लगभग 100 पात्रों पर दो संपादक खिड़कियों के लिए पर्याप्त जगह बची थी।

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

यदि आप और आपके सह-प्रोग्रामर में उच्च-रिज़ॉल्यूशन स्क्रीन और तेज दृष्टि है, तो हर तरह से एक छोटे से फ़ॉन्ट और लंबी लाइनों का उपयोग करें। इसके विपरीत, आपको छोटी लाइनों की आवश्यकता हो सकती है।


1
प्लस "तेज आंखों" के लिए क्योंकि वास्तव में मेरे साथ क्या हुआ था।
EKanadily

26

मैं आमतौर पर 120-150 का उपयोग करता हूं जब तक कि कंपनी अन्यथा वर्णन नहीं करती है। हालाँकि यह कोड के प्रकार पर भी निर्भर करता है:

  • मैं (लगभग) एक पंक्ति में कई कथनों का उपयोग नहीं करता
  • मैं केवल लंबी लाइनों (> 12) का उपयोग करता हूं केवल अगर ऐसी रेखाएं जो समान दिखती हैं, तो उन्हें संरेखित किया जा सकता है और टूट नहीं सकता है।
  • मैं हमेशा पर्याप्त स्थान / कोष्ठक आदि का उपयोग करता हूं
  • मैं छोटे नामों के ऊपर लंबे चर नाम पसंद करता हूं

कुछ साल पहले तक मैं 100 तक ही सीमित था, लेकिन अब विडीक्रीन्स का उपयोग आम तौर पर किया जाता है और उच्च रिज़ॉल्यूशन मॉनिटर 120 को लैपटॉप पर भी देखा जा सकता है (जिसका मैं बमुश्किल उपयोग करता हूं)।

एक किताब की स्क्रीन की तुलना करना वास्तव में अच्छा नहीं है क्योंकि एक किताब में अधिक ऊर्ध्वाधर स्थान होता है और एक स्क्रीन में अधिक क्षैतिज स्थान होता है। मैं हमेशा एक फ़ंक्शन अधिकतम रखने का प्रयास करता हूं। एक दृश्यमान स्क्रीन।


6
एक साथ कई खिड़कियां खुली होने के साथ प्रति पंक्ति 120-150 चार्ट कैसे काम करता है? क्या आप कई कोड संपादक खिड़कियां खुली रखते हैं? - मेरे 30 '' मॉनीटर पर, मेरे पास 3 विंडो हो सकती हैं, अगर मैं अपनी लाइनों को 97 चार्ट / लाइन तक सीमित कर दूं।
काजमग्नस

1
मैं एक बड़े डिस्प्ले पर कोड करता हूं और मुझे बड़ी मात्रा में पसंद है। मैंने ११०-१३० का लक्ष्य रखा। मेरे मुख्य लक्ष्यों में से एक पठनीयता है और 2-3 लाइनों में बयानों को तोड़ना कभी-कभी मेरी राय में कम पठनीय होता है। मैं कबाड़ को छिपाने के लिए कभी-कभी 500-1000 पर भी जाऊंगा, मैं कुछ टिप्पणियां, अक्षम कोड और कुछ हार्ड-कोडिंग मानों को नहीं देखना चाहता। मुझे लगता है कि यह प्रोग्रामर पर भी निर्भर करता है। यदि अधिकांश कोडर्स 80 पर काम करते हैं तो साझा कोड के साथ काम करने के लिए इसका सबसे अच्छा उद्देश्य है।
सूर्यास्तक

10

हो सकता है कि 80 अक्षर भी इन ख़राब गटर श्रृंखलाओं से बचने के लिए एक अच्छा बिंदु है:

object.getFoo().getBar().getFooBar().get ...

यदि आप इसे 80 वर्णों तक सीमित करते हैं, तो शायद कोई व्यक्ति इन चरों को स्थानीय कर देगा और अशक्त जांच आदि कर सकता है, लेकिन हो सकता है कि अधिकांश प्रोग्रामर उन्हें अगली पंक्ति में लपेटने दें। मुझे नहीं पता

इसके अलावा, 80 वर्ण महान हैं जैसा कि स्टारब्लेउ ने उल्लेख किया है। यह निश्चित रूप से कोडिंग मानकों में जाना चाहिए।


5
FYI करें, इस तरह की अत्यधिक विधि को ट्रेन के मलबे विरोधी पैटर्न के रूप में जाना जाता है ।
डेनिस

4

हार्डवेयर प्रतिबंधों की उपेक्षा, और हम कोड बनाम प्राकृतिक भाषा को पढ़ने के तरीके में कोई अंतर होने पर, मैं लगभग 80 वर्णों तक लाइनों को सीमित करने के लिए तीन प्राथमिक कारण देखता हूं।

  1. मानव नेत्र गोल होते हैं, वास्तव में संकीर्ण और चौड़े नहीं होते हैं, और उनका अधिकांश संकल्प बीच में होता है । जब एक समय में घंटों तक पढ़ना होता है, तो एक स्क्रॉल पट्टी का उपयोग करते हुए, कम आर्क में आंखों को झाड़ने के लिए यह बहुत अधिक आरामदायक होता है। मुझे कोड की पठनीयता के लिए एक औपचारिक अध्ययन के बारे में पता नहीं है, लेकिन मेरी खुद की टिप्पणियों से, मॉनिटर के साथ 2 फीट की दूरी पर, 10pt के मोनोस्पॉन्टेड फ़ॉन्ट पर पाठ आकार के साथ, 100 अक्षर मेरे क्षैतिज क्षेत्र का 1/3 भाग लेते हैं। दृष्टि के आसपास, या लगभग 60 डिग्री ( 30 डिग्री के बाहर या तो जहां हमारी सभी आंखों का संकल्प है )।
  2. अधिकांश लोग काम पर एक बड़े मॉनिटर का उपयोग करते हैं ताकि वे कई चीजों को आगे और पीछे क्लिक किए बिना देख सकें, ताकि वे एक चीज को वास्तव में बड़ा न देख सकें।
  3. कम लाइनों में कम जटिलता होती है, जो उम्मीद करती है कि एक डेवलपर को अपने कोड को अधिक सुपाच्य इकाइयों में विभाजित करने के लिए मजबूर करना चाहिए।

3

मुझे स्पष्ट रूप से कहीं न कहीं पढ़ना याद है (मुझे लगता है कि यह एजाइल डॉक्यूमेंटेशन में था ) कि इष्टतम पठनीयता के लिए एक दस्तावेज़ की चौड़ाई लगभग दो अक्षर या 60-70 अक्षर होनी चाहिए। मुझे लगता है कि पुराने टर्मिनलों की लाइन की चौड़ाई उस पुराने टाइपोग्राफिक नियम से आई थी।


3

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

मैंने हाल ही में कोड गुणवत्ता में सुधार के लिए IDE फ़ॉन्ट आकार बढ़ाने के लिए हाल ही में कुछ ब्लॉग पर (क्या ब्लॉग याद नहीं कर सकते हैं) एक सिफारिश देखी है, इसके पीछे तर्क यह है कि अगर कम कोड स्क्रीन पर फिट बैठता है तो आप छोटी लाइनें लिखेंगे और राउटर कार्य करता है।

मेरी राय में छोटी पंक्तियाँ कोड को पढ़ना और इसे डिबग करना आसान बनाती हैं, इसलिए मैं लाइनों को छोटा रखने की कोशिश करता हूं, अगर आपको खुद को बेहतर कोड लिखने के लिए एक सीमा निर्धारित करनी है, तो चुनें कि आपके लिए क्या काम करता है - यदि आप अधिक उत्पादक हैं लंबी लाइनों को केवल एक विस्तृत स्क्रीन पर पृष्ठ आकार और कोड बढ़ाने के लिए स्वतंत्र महसूस होता है।


1

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

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

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


0

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

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