क्या किसी कूट फ़ाइल में अधिकतम वर्णों की अधिकतम चौड़ाई को लागू करने का एक वैध कारण है, इस दिन और आयु? [बन्द है]


159

गंभीरता से। एक 22 "मॉनिटर पर, यह केवल स्क्रीन के एक चौथाई हिस्से को कवर करता है। मुझे इस नियम को खत्म करने के लिए कुछ बारूद की आवश्यकता है।


मैं यह नहीं कह रहा हूं कि सीमा नहीं होनी चाहिए; मैं सिर्फ कह रहा हूं, 80 अक्षर बहुत छोटे हैं।


सभी जवाब बहुत ज्यादा राज्य जो मैं जोड़ना चाहता था। आपको एक वास्तविक जीवन का उदाहरण देने के लिए - मेरे पास एक x61 है, संकल्प 1024x768 है। जब मैं सड़क पर होता हूं, मेरे पास मेरे फैंसी मॉनिटर नहीं होते हैं। मेरे आईडीई में कोड खोलना एक दर्द है जब यह इस नियम से अधिक है।
तक


भले ही आपके पास 3 मॉनिटर का एक सेट हो। यह सिर को दाएं से बाएं और पीछे हिलाने का कारण नहीं है। सदैव। आह-हा-हा। दरअसल आंख सिर से तेज चलती है। क्या आप अखबारों में कॉलम के बारे में जानते हैं? चौड़ाई का कारण आंख / सिर / आदमी की सुविधा है।
इवान ब्लैक

जवाबों:


257

मुझे लगता है कि कोड को 80 (या 79) कॉलम रखने की प्रथा मूल रूप से 80-कॉलम डंबल या 80-कॉलम प्रिंटआउट पर कोड को संपादित करने वाले लोगों का समर्थन करने के लिए बनाई गई थी। वे आवश्यकताएं अब ज्यादातर दूर हो गई हैं, लेकिन 80 कॉलम नियम को बनाए रखने के लिए अभी भी वैध कारण हैं:

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

मुझे लगता है कि अंतिम बिंदु सबसे महत्वपूर्ण है। हालांकि पिछले कुछ वर्षों में डिस्प्ले आकार और रिज़ॉल्यूशन में बढ़े हैं, लेकिन आँखें नहीं


7
उनके पास "बड़े पैमाने पर चले गए" हो सकते हैं, लेकिन पूरी तरह से नहीं। मैं दूरस्थ मशीन से जुड़ी ssh विंडो में दो अलग-अलग सेटअपों के साथ काम करता हूं: 1)। जो डिफ़ॉल्ट रूप से 80 अक्षर चौड़ा है। और 2) विज़ुअल स्टूडियो में, दो पैनल साथ-साथ हैं ताकि मैं एक ही समय में हेडर और सीपीपी फ़ाइल देख सकूँ।
एननो

10
@steffenj: असल में, किताबें प्रति पंक्ति 66 के बारे में पात्रों के लिए शूटिंग के लिए जाते हैं (हालांकि यह बदलता रहता है कुछ हद तक अन्य मापदंडों पर निर्भर करता है), क्योंकि लंबे समय तक लाइनों करना मेकअप पढ़ने और अधिक कठिन। अधिकतम कोड लाइन की लंबाई का तर्क दिया जा सकता है, लेकिन 80 ऐतिहासिक और व्यावहारिक कारणों से सुविधाजनक है।
स्टीव एस

69
समस्या लोगों को लाइन की लंबाई कम रखने के लिए मजबूर करने से है, वे कम अर्थपूर्ण नामों का उपयोग करते हैं ..
इयान रिंगरोज

4
मुझे पठनीयता के बारे में टिप्पणी काफी दिलचस्प लगती है, क्योंकि जिस चीज को मैं वास्तव में मुद्रित प्रोग्रामिंग लेखों / पुस्तकों / ... के बारे में नफरत करता हूं, वह यह है कि कोड उदाहरणों के लिए जिन छोटी लाइनों का उपयोग किया जाता है, उन्हें पढ़ना बहुत कठिन है। किसी चीज़ को नई लाइन में ले जाने में बहुत समझदारी हो सकती है, लेकिन समूहीकरण तार्किक रूप से होना चाहिए, अभिव्यक्ति को पुनरावृत्ति रूप से विच्छेदित करना, न कि इसलिए कि आउटपुट डिवाइस गलती से अपनी सीमा तक पहुंच गया है। IOW, मुझे लगता है कि ऐसे उपकरण जो इस तरह के संकीर्ण प्रतिबंध लगाते हैं, वे कोड प्रदर्शित करने के लिए उपयुक्त नहीं हैं।
क्रिस लेचर

4
मुझे लगता है कि 80-स्तंभ प्रवर्तकों के साथ समस्या यह है कि वे भूल जाते हैं कि कोड ऊर्ध्वाधर दिशा में बढ़ता है। आप एक ही समस्या प्राप्त करते हैं, लेकिन ऊर्ध्वाधर दिशा में और इस आधुनिक कोड के शीर्ष पर भयानक लगता है जब आपको दो बयानों को कभी-कभी चार या पांच लाइनों तक तोड़ना पड़ता है। यह अधिक पठनीय नहीं है। आधुनिक कोड के साथ मेरा मतलब है वर्णनात्मक चर नाम और योग्यता विरासत, नामस्थान, वर्ग आदि। कृपया 80 कॉलम nonsese बंद करें, इसके बजाय सामान्य ज्ञान का उपयोग करें। 120 बेहतर है, लेकिन एक नियम भी नहीं होना चाहिए।
लार्जवाड

79

80-कॉलम टेक्स्ट फॉर्मेटिंग की उत्पत्ति 80-कॉलम टर्मिनलों से पहले है - आईबीएम पंच कार्ड की तारीख 1928 तक है ! यह (apocryphal) की याद दिलाता है कहानी कि अमेरिकी रेलवे गेज रोमन ब्रिटेन में रथ के पहियों की चौड़ाई से निर्धारित होता था।

मुझे कभी-कभी यह थोड़ा अटपटा लगता है, लेकिन यह कुछ समझ में आता है मानक सीमा है, इसलिए यह 80 कॉलम है।

यहाँ Slashdot द्वारा कवर एक ही विषय है

और यहाँ एक पुराने स्कूल फोरट्रान स्टेटमेंट है:

फोरट्रान पंच कार्ड


60

80 वर्ण इन दिनों एक हास्यास्पद सीमा है। अपनी कोड लाइनों को विभाजित करें जहां यह समझ में आता है, किसी भी मनमाना चरित्र सीमा के अनुसार नहीं।


वर्ण सीमा आपको यह नहीं बताती है कि आपको कोड की एक पंक्ति को कैसे विभाजित करना है, लेकिन WHEN
gztomas

नहीं ऐसा नहीं है। यदि आप 80 से अधिक लंबी लाइन लिखते हैं, तो आपको पहले से ही अभिव्यक्ति की जटिलता या नामकरण की रणनीति में समस्या है। जैसा कि दूसरों ने उल्लेख किया है, पठनीयता एक शीर्ष चिंता का विषय है और पढ़ने की गति 60-66 चार्ट (टाइपोग्राफी, मानव फिजियो पर आधारित) से ऊपर गिरना शुरू हो जाती है।
सोला

@sola आपकी टिप्पणी यहाँ 98 वर्णों के साथ दिखाई देती है, और यह समझने के लिए घनी प्राकृतिक गैर-देशी भाषा (मेरे लिए) है। पूरी तरह से सुपाठ्य। 3-4 इंडेंट, सिंटैक्स मार्कर आदि के साथ एक कोड और भी आसान है।
viyps

मैंने गलती से इस उत्तर को अस्वीकार कर दिया है और अब इसे नहीं बढ़ा सकता। :(
एंडी

35

आपको सिर्फ उन सभी के लिए करना चाहिए जिनके पास 22 इंच की वाइडस्क्रीन मॉनिटर नहीं है। व्यक्तिगत रूप से, मैं एक 17 इंच 4: 3 मॉनिटर पर काम करता हूं, और मुझे लगता है कि पर्याप्त रूप से अधिक विस्तृत है। हालांकि, मेरे पास उन मॉनिटरों में से 3 भी हैं, इसलिए मेरे पास अभी भी बहुत सारे प्रयोग करने योग्य स्क्रीन स्पेस हैं।

इतना ही नहीं, लेकिन मानव आंख वास्तव में पाठ पढ़ने में समस्या है अगर लाइनें बहुत लंबी हैं। यह खो जाना बहुत आसान है कि आप किस लाइन में हैं। अख़बार 17 इंच के पार (या उस तरह के किसी दिन) होते हैं, लेकिन आप उन्हें पूरे पृष्ठ में लिखते हुए नहीं देखते हैं, वही पत्रिकाओं और अन्य मुद्रित वस्तुओं के लिए जाता है। यदि आप कॉलम को संकीर्ण रखते हैं तो वास्तव में पढ़ना आसान है।


14
जब आप मिश्रण में इंडेंटिंग नहीं जोड़ते हैं। यदि आप प्रति इंडेंट में 4 स्पेस का उपयोग करते हैं, और आप कुछ इस तरह हैं, जैसे कि नाम स्थान-> वर्ग-> विधि-> अगर-> के लिए, तो यह आपके स्पेस का 1/5 वां हिस्सा है।
ट्रॉमापॉनी

आप हमेशा इंडेंट से 80 चार्ट पर नियम निर्धारित कर सकते हैं। इस तरह आँख आसानी से इसका अनुसरण कर सकती है।
विन्सेंट मैकनाब

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

13
हालाँकि, गद्य पढ़ना रीडिंग कोड के समान नहीं है।
अटेरियो

3
समाचार पत्रों के लिए, महान उदाहरण। @Atario, GOOD कोड पढ़ना बहुत पसंद है गद्य पढ़ना।
टॉड चाफी

23

जब आपके पास बयानों का एक क्रम होता है जो मामूली बदलावों के साथ दोहराते हैं तो समानता और अंतर को देखना आसान हो सकता है यदि उन्हें लाइनों में वर्गीकृत किया जाता है ताकि अंतर लंबवत रूप से संरेखित हो।

मेरा तर्क है कि अगर मैं इसे कई लाइनों में विभाजित कर देता तो निम्नलिखित अधिक पठनीय होता।

switch(Type) {
case External_BL:   mpstrd["X"] = ptDig1.x - RadialClrX;    mpstrd["Y"] = ptDig1.y - RadialClrY;    break;
case External_BR:   mpstrd["X"] = ptDig1.x + RadialClrX;    mpstrd["Y"] = ptDig1.y - RadialClrY;    break;
case External_TR:   mpstrd["X"] = ptDig1.x + RadialClrX;    mpstrd["Y"] = ptDig1.y + RadialClrY;    break;
case External_TL:   mpstrd["X"] = ptDig1.x - RadialClrX;    mpstrd["Y"] = ptDig1.y + RadialClrY;    break;
case Internal_BL:   mpstrd["X"] = ptDig1.x + RadialClrX;    mpstrd["Y"] = ptDig1.y + RadialClrY;    break;
case Internal_BR:   mpstrd["X"] = ptDig1.x - RadialClrX;    mpstrd["Y"] = ptDig1.y + RadialClrY;    break;
case Internal_TR:   mpstrd["X"] = ptDig1.x - RadialClrX;    mpstrd["Y"] = ptDig1.y - RadialClrY;    break;
case Internal_TL:   mpstrd["X"] = ptDig1.x + RadialClrX;    mpstrd["Y"] = ptDig1.y - RadialClrY;    break;
}

अद्यतन: टिप्पणी में यह सुझाव दिया गया है कि यह ऊपर करने का एक अधिक सफल तरीका होगा:

switch(Type) {
  case External_BL: dxDir = - 1; dyDir = - 1; break;
  case External_BR: dxDir = + 1; dyDir = - 1; break;
  case External_TR: dxDir = + 1; dyDir = + 1; break;
  case External_TL: dxDir = - 1; dyDir = + 1; break;
  case Internal_BL: dxDir = + 1; dyDir = + 1; break;
  case Internal_BR: dxDir = - 1; dyDir = + 1; break;
  case Internal_TR: dxDir = - 1; dyDir = - 1; break;
  case Internal_TL: dxDir = + 1; dyDir = - 1; break;
}
mpstrd["X"] = pt1.x + dxDir * RadialClrX;
mpstrd["Y"] = pt1.y + dyDir * RadialClrY; 

हालाँकि यह अब 80 कॉलम में फिट बैठता है, मुझे लगता है कि मेरी बात अभी भी कायम है और मैंने सिर्फ एक बुरा उदाहरण चुना है। यह अभी भी प्रदर्शित करता है कि एक पंक्ति में कई कथन रखने से पठनीयता में सुधार हो सकता है।


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

@ एमएक्सपी: सहमत। यदि ऊपर लिखने का एक अधिक संक्षिप्त तरीका है, तो मैं इसे देखना चाहूंगा।
सैम हसलर

मैं सामान्य विचार से सहमत हूं, लेकिन उदाहरण ... इस बारे में क्या: स्विच (...) {मामला ... BL: dxDir = - 1; dyDir = - 1; टूटना; मामला ... BR: dxDir = + 1; dyDir = - 1; टूटना; ...} ... ["X"] = pt1.x + dxDir * Rad ... X; ... ["वाई"] = pt1.y + dyDir * रेड ... वाई;
यारिक

38
तथ्य यह है कि मुझे दो उदाहरणों में से सबसे पहले स्क्रॉल करने की आवश्यकता है क्षैतिज रूप से छोटी रेखाओं के बारे में पिंट को बेहतर साबित करता है :-)
Enno

1
मैं स्क्रॉल करने के लिए नफरत नहीं समझता? यह एक आम राय है, और मैं यह नहीं कह रहा कि यह गलत है, मैं इसे नहीं समझता। खासकर यदि आप एक कोड संपादक में हैं, तो आपको माउस को प्राप्त करने के लिए कीबोर्ड से अपने हाथ हिलाने की जरूरत नहीं है - बस (ctrl+)arrowखत्म या हिटend
KOGI

21

डिफ़ॉल्ट आकार में एक मोनोस्पेस वाले फ़ॉन्ट को प्रिंट करना (A4 पेपर पर) 66 कॉलम द्वारा 80 कॉलम है।


16

मैं बड़ी स्क्रीन के लाभ का उपयोग कोड के कई टुकड़ों को प्रत्येक अभिभावक के बगल में करता हूं।

आपको मुझसे कोई बारूद नहीं मिलेगा। वास्तव में, मुझे यह देखने से नफरत होगी कि आपात स्थिति के बाद से मैं अभी भी दुर्लभ मामलों को देखता हूं जहां मुझे पाठ-कंसोल से कोड बदलने की आवश्यकता है।


14

सुपर-लंबी लाइनें पढ़ने के लिए कठिन हैं। सिर्फ इसलिए कि आप अपने मॉनिटर पर 300 अक्षर प्राप्त कर सकते हैं, इसका मतलब यह नहीं है कि आपको लाइनों को लंबा करना चाहिए। 300 वर्ण भी एक बयान के लिए बहुत जटिल हैं जब तक कि आपके पास कोई विकल्प नहीं है (एक कॉल जिसे मापदंडों के पूरे समूह की आवश्यकता है।)

मैं एक सामान्य नियम के रूप में 80 वर्णों का उपयोग करता हूं, लेकिन मैं इससे आगे निकल जाऊंगा, अगर इसे लागू करने का मतलब अवांछनीय स्थान पर लाइन ब्रेक लगाना होगा।


ऐसे अध्ययन हैं जो दिखाते हैं कि लोग ढीले ट्रैक से पहले वर्णों / शब्दों की x मात्रा को पढ़ और उनका अनुसरण कर सकते हैं। मुझे लगता है कि 80 वहाँ कहीं है। मेरे पास ऐसा कोई स्रोत नहीं है जो हालांकि वापस आ सके।
तक

हाँ, मुझे लगता है कि वास्तव में, यह लाइनों को छोटा रखने के बारे में इतना नहीं है जितना कि लाइनों को साफ / संक्षिप्त / पठनीय / समझने योग्य रखने के बारे में है।
KOGI

यदि आपके पास एक (एक कॉल है जिसे मापदंडों के एक पूरे समूह की आवश्यकता है।) वैसे भी आपको कुछ रिफैक्टिंग करने की आवश्यकता है।
जरमग्रेगरोक

@Zarremgregarrok मैंने Microsoft API में कुछ बहुत लंबे पैरामीटर सूची देखे हैं।
लोरेन Pechtel

@LorenPechtel क्या यह अच्छी तरह से लिखा है?
जरमग्रेगरोक

8

केवल एक चीज जो मैं 80 वर्णों के भीतर रहना चाहता हूं, वह मेरी टिप्पणी है।

व्यक्तिगत रूप से ... मैं अपनी सारी दिमागी शक्ति (जो कुछ कम है) को सही तरीके से कोडित करने के लिए समर्पित कर रहा हूं, यह एक दर्द है कि वापस जाने के लिए और 80 char की सीमा पर सब कुछ तोड़ने के लिए जब मैं अगले फ़ंक्शन पर अपना समय बिता सकता हूं । हाँ, Resharper मेरे लिए ऐसा कर सकता है जो मुझे लगता है, लेकिन फिर यह मुझे थोड़ा सा पता चलता है कि एक 3rd पार्टी उत्पाद मेरे कोड लेआउट पर निर्णय ले रहा है और इसे बदल देता है ("कृपया मेरे कोड को दो पंक्तियों में नहीं तोड़ें HAL। HAL?" )।

उन्होंने कहा, मैं काफी छोटी टीम पर काम करता हूं और हमारे सभी मॉनीटर काफी बड़े हैं, इस बात की चिंता है कि मेरे साथी प्रोग्रामर को इस बात की कोई चिंता नहीं है।

लगता है कि कुछ भाषाएं हिरन के लिए अधिक धमाके के लिए कोड की लंबी लाइनों को प्रोत्साहित करती हैं (शॉर्ट हैंड अगर स्टेटमेंट्स)।


7

मेरे पास दो 20 "1600x1200 मॉनिटर हैं और मैं 80 कॉलमों पर चिपका हूं क्योंकि यह मुझे कई टेक्स्ट एडिटर विंडोज़ को साइड-बाय-साइड डिस्प्ले करने देता है। '6x13' फॉन्ट (ट्रेडिशनल। xterm फॉन्ट) का उपयोग करते हुए 80 कॉलम 480 पिक्सल से अधिक का स्क्रॉल करते हैं। और विंडो बॉर्डर्स। यह एक 1600x1200 मॉनिटर पर इस प्रकार की तीन विंडो रखने की अनुमति देता है। खिड़कियों पर ल्यूसिडा कंसोल फ़ॉन्ट यह नहीं करेगा (न्यूनतम यूनेबल आकार 7 पिक्सेल चौड़ा है), लेकिन 1280x1024 मॉनिटर दो कॉलम प्रदर्शित करेगा एक 1920x1200 मॉनिटर जैसे कि HP LP2465 3 प्रदर्शित करेगा। यह विजुअल स्टूडियो से विभिन्न एक्सप्लोरर, प्रॉपर्टीज और अन्य विंडो के लिए थोड़ी सी जगह भी छोड़ देगा।

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

हालाँकि, जावा और .Net के लिए मानक श्रेणी के पुस्तकालयों में बहुत लंबे पहचानकर्ताओं का प्रसार होता है, इसलिए कोई भी ऐसा करने में सक्षम होने की गारंटी नहीं दे सकता है। इस स्थिति में, लाइन-ब्रेक के साथ कोड को बिछाने से अभी भी संरचना को स्पष्ट करने में मदद मिलती है।

ध्यान दें कि आप यहाँ '6x13' फोंट के विंडोज़ संस्करण प्राप्त कर सकते हैं ।


यह कहने के लिए धन्यवाद! बिग मॉनिटर 80 लाइन की सीमा के लिए सभी अधिक कारण हैं, इसलिए आप अधिक विंडोज साइड-बाय-साइड फिट कर सकते हैं। यह उल्लेख करने के लिए कि स्रोत कोड (कागज पर) को कभी-कभी प्रिंट करने में सक्षम होना अच्छा है। या स्निपेट्स को अन्य दस्तावेजों में पेस्ट करें।
dreeves

7

लोगों का कहना है कि कोड की लंबी लाइनें जटिल होती हैं। एक साधारण जावा वर्ग पर विचार करें:

public class PlaintiffServiceImpl extends RemoteServiceServlet implements PlaintiffService {

यह 94 वर्ण लंबा है और वर्ग नाम काफी छोटा है (GWT मानकों द्वारा)। 2 लाइनों पर पढ़ना मुश्किल होगा और यह एक पंक्ति पर बहुत पठनीय है। इसके बारे में व्यावहारिक होने के नाते और इस प्रकार "बैकवर्ड संगतता" की अनुमति देते हुए, मैं कहूंगा कि 100 अक्षर सही चौड़ाई है।


5
मैं क्षैतिज स्क्रॉलबार का प्रशंसक नहीं हूं
bryc

9
मुझे आश्चर्य है कि किसी ने भी यह नहीं कहा है, यह देखते हुए कि मुझे इस चर्चा में कई साल देर हो गई है, लेकिन मुझे लगता है कि "विस्तार" और / या "क्रियान्वयन" से ठीक पहले newlines (शायद स्पष्टता के लिए एक इंडेंट के साथ) कीवर्ड अभी भी बहुत उत्पादन करेंगे पठनीय कोड।
mtraceur

2
मुझे इस तथ्य से प्यार है कि यह "एक लाइन पर बहुत पठनीय है", जबकि एक ही समय में मैं पूरे कोड स्निपेट को नहीं पढ़ सकता क्योंकि यह ब्राउज़र में क्षैतिज स्थान को ओवरफ्लो करता है। बिंदु नापसंद।
ऑलिगॉफ्रेन

6

अन्य उत्तरों ने पहले से ही चीजों को अच्छी तरह से अभिव्यक्त किया है, लेकिन यह भी विचार करने के लायक है कि आप किसी कोड को ईमेल में कॉपी या पेस्ट करना चाहते हैं या कोड नहीं तो एक अंतर।

वह समय है जब "अधिकतम चौड़ाई" उपयोगी है।


6

आप एकमात्र व्यक्ति नहीं हैं जो आपका कोड बनाए रखने वाले हैं।

अगले व्यक्ति के पास 17 "स्क्रीन हो सकती है या पाठ को पढ़ने के लिए बड़े फ़ॉन्ट की आवश्यकता हो सकती है। सीमा कहीं और होनी चाहिए और 80 वर्ण पिछले स्क्रीन सीमाओं के कारण सम्मेलन है। क्या आप किसी भी नए मानक (120) के बारे में सोच सकते हैं। क्यों यह एक अच्छा विचार है कि दूसरे का उपयोग करने के लिए "यही कारण है कि मेरे मॉनिटर पर Xpt फ़ॉन्ट पर फिट बैठता है?"

याद रखें, हमेशा हर नियम के अपवाद होते हैं, इसलिए आपके पास एक विशेष लाइन या कोड का ब्लॉक होता है, जो 80 से अधिक वर्णों के लिए समझ में आता है, फिर एक विद्रोही हो।

लेकिन सोचने के लिए पहले समय लें "क्या यह कोड वास्तव में इतना बुरा है कि यह 80 वर्णों के भीतर नहीं रह सकता है?"


1
जब मैं 2spc टैबस्टॉप कर सकता हूं, तो मैं 80 वर्णों के साथ रहूंगा। बेहतर अभी तक, वास्तव में इंडेंटेशन के लिए टैब का उपयोग करते हैं, आवश्यकता तब होती है जब टैब = 2, 80 कॉलम में फिट बैठता है, बेहतर पठनीयता के लिए 4 सबसे अधिक समय का उपयोग करें। इस तरह से जब आपको वास्तव में 80 स्तंभों को नीचे झुकाना पड़ता है, लेकिन एक कीमत पर।
जोशुआ

5

लिनक्स कोडिंग मानक में, न केवल वे 80 अक्षर की सीमा रखते हैं, बल्कि वे 8 स्थान इंडेंटेशन का भी उपयोग करते हैं।

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

यह स्पष्ट कोड बना देगा क्योंकि इंडेंटेशन लंबाई की परवाह किए बिना, कई नेस्टेड कंट्रोल संरचनाओं के साथ कोड को पढ़ना मुश्किल है।


3
कई फ़ंक्शन कॉल के साथ कोड पढ़ने के बारे में कैसे? निश्चित रूप से इन दोनों दृष्टिकोणों के बीच एक समझौता है ...
Zsolt Török

5

मैंने अपने कोड को 100 वर्णों तक चौड़ा किया है जो मेरी मैकबुक पर मेरी स्क्रीन के आधे से भी कम समय में आराम से फिट बैठता है। 120 वर्ण शायद बहुत लंबी और जटिल रेखाओं को शुरू करने से पहले की सीमा है। आप कंपाउंड स्टेटमेंट और डीप नेस्टेड कंट्रोल स्ट्रक्चर्स को प्रोत्साहित करने के लिए बहुत अधिक विस्तृत रूप से प्राप्त नहीं करना चाहते हैं।

सही मार्जिन एक अतिरिक्त विधि रीफ़ैक्टरिंग करने के लिए कहने का प्रकृति का तरीका है


5

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


5

अपने नियोक्ता के लिए कोडिंग दिशानिर्देशों के लेखक के रूप में मैंने 80 से 132 तक की लाइन की लंबाई का अनुमान लगाया है। यह मूल्य क्यों है? खैर, दूसरों की तरह बताया, 80 कई पुराने हार्डवेयर टर्मिनलों की लंबाई है। और 132 भी है! जब टर्मिनल विस्तृत मोड में हो तो यह लाइन की चौड़ाई होती है । कोई भी प्रिंटर संघनित फ़ॉन्ट के साथ विस्तृत मोड में हार्डकॉपी बना सकता है।

80 पर नहीं रहने का कारण यह है कि मैं बल्कि

  • पहचानकर्ताओं के लिए एक अर्थ के साथ लंबे नामों को प्राथमिकता दें
  • सी में स्ट्रक्चर्स और एनम के साथ टाइपराइफ्स से परेशान न हों (वे बीएडी हैं, वे उपयोगी जानकारी प्राप्त करते हैं। "डीप सी सीक्रेट्स" में पीटर वैन डेर लिंडेन से पूछें कि क्या आपको विश्वास नहीं है), इसलिए struct FOO func(struct BAR *aWhatever, ...)कोड में टाइप किए गए कट्टरपंथियों से अधिक है ।

और इन नियमों के तहत सिर्फ 80 वर्ण / रेखा का कारण बदसूरत रेखा मेरी आंखों की तुलना में अधिक बार स्वीकार्य होती है (ज्यादातर प्रोटोटाइप और फ़ंक्शन परिभाषा में)।


4

जैसा कि अन्य लोगों ने कहा है, मुझे लगता है कि यह (1) प्रिंटिंग के लिए सबसे अच्छा है और (2) कई फाइलों को साइड से लंबवत प्रदर्शित करना।


4

मैं एक वाइडस्क्रीन मॉनिटर पर दो SxS संपादकों को अनुमति देने के लिए अपनी चौड़ाई को 100 वर्णों तक सीमित करना पसंद करता हूं। मुझे नहीं लगता है कि अब बिल्कुल 80 वर्णों की सीमा के लिए कोई अच्छा कारण है।


4

आनुपातिक फोंट का उपयोग करें।

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


वास्तव में बुरा विचार जब आप 'इंडेंट' और एक मोनोस्पॉन्टेड फोंट का उपयोग करना चाहते हैं।
Bersaelor

2
@Bersaelor नहीं, यह तब ठीक काम करता है जब आप हमेशा केवल टैब का उपयोग करके इंडेंट करते हैं और टैब की चौड़ाई को ठीक से सेट करते हैं (चौड़ाई 4 मोनोसेप्ड की तरह होते हैं शायद 7 आनुपातिक)। इंडेंटेशन काम करता है, आप बस ASCII कला नहीं कर सकते हैं, लेकिन मुझे नहीं लगता कि ASCII कला कोड में है।
मातरिनस

व्यक्तिगत रूप से, मैं प्रोग्रामिंग करते समय काफी विपरीत दिशा में हूं। मुझे आनुपातिक कोड वास्तव में पढ़ने में कठिन लगता है। कभी-कभी, मैं मोनोसे फोंट (हाँ, मेनू सहित) का उपयोग करने के लिए आईडीई को भी कॉन्फ़िगर करता हूं।
सेबेस्टियन मच

2

मैं एक सरल कारण के लिए चीजों को 80 के करीब रखने की कोशिश करता हूं: इससे बहुत अधिक इसका मतलब है कि मेरा कोड बहुत जटिल हो रहा है। वर्बोज़ प्रॉपर्टी / मेथड नेम, क्लास नेम, इत्यादि के रूप में बहुत नुकसान पहुंचाते हैं।

मैं मुख्य रूप से पायथन कोडर हूं, इसलिए यह सीमाओं के दो सेट का उत्पादन करता है:

  1. कोड की लंबी लाइनें न लिखें
  2. बहुत ज्यादा इंडेंट न करें

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

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

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


2

इसके लिए पहले से ही बहुत सारे अच्छे उत्तर हैं, लेकिन यह ध्यान देने योग्य है कि आपके आईडीई में आपके पास बाईं ओर फ़ाइलों की एक सूची हो सकती है, और दाईं ओर (या किसी अन्य कॉन्फ़िगरेशन) फ़ंक्शन की सूची हो सकती है।

आप कोड पर्यावरण का सिर्फ एक हिस्सा हैं।


2

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

इसे जेडिट में लागू किया जाता है (स्रोत: jedit.org )वैकल्पिक शब्द
जो वर्ड रैप प्रदान करता है

लेकिन यह एक समय से पहले ग्रहण में कड़वा याद किया है ! (वास्तव में 2003 के बाद से), मुख्यतः क्योंकि टेक्स्ट एडिटर के लिए एक शब्द रैप शामिल है:

  • लिपटी हुई रेखा की जानकारी पाठ दर्शक, कोड नेविगेशन, ऊर्ध्वाधर शासकों के लिए है।
  • गोटो लाइन, लाइन नंबरिंग रूलर कॉलम, करंट लाइन हाइलाइट, सेविंग फाइल जैसे फंक्शंस के लिए अनवांटेड लाइन की जानकारी जरूरी है।

1

मैं वास्तव में अपने स्वयं के कोड के लिए एक समान नियम का पालन करता हूं, लेकिन केवल ए 4 पृष्ठ पर कोड को प्रिंट करने के कारण - 80 कॉलम मेरे स्वतंत्र आकार के लिए सही चौड़ाई के बारे में है।

लेकिन यह व्यक्तिगत पसंद है और शायद आप के बाद क्या नहीं थे (चूंकि आप बार-बार जाने के लिए बारूद चाहते हैं)।

आप सीमा के पीछे तर्क पर सवाल नहीं उठाते हैं - गंभीरता से, अगर कोई भी एक अच्छे कारण के साथ नहीं आ सकता है तो ऐसा क्यों है, आपके पास अपने कोडिंग मानकों से इसे हटाने के लिए एक अच्छा मामला है।


मुझे पूरा यकीन है कि यह उन दिनों से है जब टेक्स्ट मोड स्क्रीन 80 अक्षर चौड़े थे।
ट्रॉमापॉनी

1

मैं दिन-भर अलग-अलग हूँ और मेरे पास 22 इंच का मॉनिटर नहीं है। मुझे नहीं पता कि मैं कभी करूंगा। यह, ज़ाहिर है, केवल तीर-कोडिंग और 300-चार लाइनों का आनंद लेने वाले प्रोग्रामर लिखने के लिए बहुत कम रुचि है।


1

हां, क्योंकि इस दिन और उम्र में भी, हम में से कुछ टर्मिनलों पर कोडिंग कर रहे हैं (ठीक है, ज्यादातर टर्मिनल एमुलेटर), जहां प्रदर्शन केवल 80 चार्ट प्रदर्शित कर सकता है। इसलिए, कम से कम मैं जो कोडिंग करता हूं, उसके लिए मैं वास्तव में 80 चार नियम की सराहना करता हूं।


0

मुझे अभी भी लगता है कि दृश्य भाग पर सीमा सीमित नहीं है। निश्चित रूप से, मॉनिटर और रिज़ॉल्यूशन आजकल एक पंक्ति में और भी अधिक वर्ण दिखाने के लिए पर्याप्त हैं, लेकिन क्या यह पठनीयता बढ़ाता है?

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


0

80 पात्रों को तोड़ना कुछ ऐसा है जो आप करते हैं कोडिंग करते हैं, बाद में नहीं। टिप्पणियों के साथ भी, बिल्कुल। अधिकांश संपादक यह देखने में आपकी सहायता कर सकते हैं कि 80-वर्ण की सीमा कहां है।

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


0

अगर हम में से एक था इन , हम इस चर्चा होने नहीं होगा! ;-)

लेकिन गंभीरता से लोगों ने अपने जवाब में जो मुद्दे उठाए हैं वे काफी वैध हैं। हालाँकि मूल पोस्टर एक सीमा के विपरीत नहीं था, केवल 80 कॉलम बहुत कम थे।

ईमेल स्निपेट को ईमेल करने के मुद्दे में कुछ योग्यता है। लेकिन उन गलत चीजों को देखते हुए, जो ज्यादातर ईमेल क्लाइंट प्री-फॉर्मेट किए गए टेक्स्ट से करते हैं, मुझे लगता है कि लाइन रैपिंग केवल आपकी समस्याओं में से एक है।

जैसा कि मुद्रण के लिए मुझे आमतौर पर लगता है कि 100 वर्ण रेखाएं बहुत ही आराम से एक मुद्रित पृष्ठ पर फिट हो जाएंगी ।


0

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

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