गंभीरता से। एक 22 "मॉनिटर पर, यह केवल स्क्रीन के एक चौथाई हिस्से को कवर करता है। मुझे इस नियम को खत्म करने के लिए कुछ बारूद की आवश्यकता है।
मैं यह नहीं कह रहा हूं कि सीमा नहीं होनी चाहिए; मैं सिर्फ कह रहा हूं, 80 अक्षर बहुत छोटे हैं।
गंभीरता से। एक 22 "मॉनिटर पर, यह केवल स्क्रीन के एक चौथाई हिस्से को कवर करता है। मुझे इस नियम को खत्म करने के लिए कुछ बारूद की आवश्यकता है।
मैं यह नहीं कह रहा हूं कि सीमा नहीं होनी चाहिए; मैं सिर्फ कह रहा हूं, 80 अक्षर बहुत छोटे हैं।
जवाबों:
मुझे लगता है कि कोड को 80 (या 79) कॉलम रखने की प्रथा मूल रूप से 80-कॉलम डंबल या 80-कॉलम प्रिंटआउट पर कोड को संपादित करने वाले लोगों का समर्थन करने के लिए बनाई गई थी। वे आवश्यकताएं अब ज्यादातर दूर हो गई हैं, लेकिन 80 कॉलम नियम को बनाए रखने के लिए अभी भी वैध कारण हैं:
मुझे लगता है कि अंतिम बिंदु सबसे महत्वपूर्ण है। हालांकि पिछले कुछ वर्षों में डिस्प्ले आकार और रिज़ॉल्यूशन में बढ़े हैं, लेकिन आँखें नहीं ।
80-कॉलम टेक्स्ट फॉर्मेटिंग की उत्पत्ति 80-कॉलम टर्मिनलों से पहले है - आईबीएम पंच कार्ड की तारीख 1928 तक है ! यह (apocryphal) की याद दिलाता है कहानी कि अमेरिकी रेलवे गेज रोमन ब्रिटेन में रथ के पहियों की चौड़ाई से निर्धारित होता था।
मुझे कभी-कभी यह थोड़ा अटपटा लगता है, लेकिन यह कुछ समझ में आता है मानक सीमा है, इसलिए यह 80 कॉलम है।
यहाँ Slashdot द्वारा कवर एक ही विषय है ।
और यहाँ एक पुराने स्कूल फोरट्रान स्टेटमेंट है:
80 वर्ण इन दिनों एक हास्यास्पद सीमा है। अपनी कोड लाइनों को विभाजित करें जहां यह समझ में आता है, किसी भी मनमाना चरित्र सीमा के अनुसार नहीं।
आपको सिर्फ उन सभी के लिए करना चाहिए जिनके पास 22 इंच की वाइडस्क्रीन मॉनिटर नहीं है। व्यक्तिगत रूप से, मैं एक 17 इंच 4: 3 मॉनिटर पर काम करता हूं, और मुझे लगता है कि पर्याप्त रूप से अधिक विस्तृत है। हालांकि, मेरे पास उन मॉनिटरों में से 3 भी हैं, इसलिए मेरे पास अभी भी बहुत सारे प्रयोग करने योग्य स्क्रीन स्पेस हैं।
इतना ही नहीं, लेकिन मानव आंख वास्तव में पाठ पढ़ने में समस्या है अगर लाइनें बहुत लंबी हैं। यह खो जाना बहुत आसान है कि आप किस लाइन में हैं। अख़बार 17 इंच के पार (या उस तरह के किसी दिन) होते हैं, लेकिन आप उन्हें पूरे पृष्ठ में लिखते हुए नहीं देखते हैं, वही पत्रिकाओं और अन्य मुद्रित वस्तुओं के लिए जाता है। यदि आप कॉलम को संकीर्ण रखते हैं तो वास्तव में पढ़ना आसान है।
जब आपके पास बयानों का एक क्रम होता है जो मामूली बदलावों के साथ दोहराते हैं तो समानता और अंतर को देखना आसान हो सकता है यदि उन्हें लाइनों में वर्गीकृत किया जाता है ताकि अंतर लंबवत रूप से संरेखित हो।
मेरा तर्क है कि अगर मैं इसे कई लाइनों में विभाजित कर देता तो निम्नलिखित अधिक पठनीय होता।
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 कॉलम में फिट बैठता है, मुझे लगता है कि मेरी बात अभी भी कायम है और मैंने सिर्फ एक बुरा उदाहरण चुना है। यह अभी भी प्रदर्शित करता है कि एक पंक्ति में कई कथन रखने से पठनीयता में सुधार हो सकता है।
(ctrl+)arrow
खत्म या हिटend
सुपर-लंबी लाइनें पढ़ने के लिए कठिन हैं। सिर्फ इसलिए कि आप अपने मॉनिटर पर 300 अक्षर प्राप्त कर सकते हैं, इसका मतलब यह नहीं है कि आपको लाइनों को लंबा करना चाहिए। 300 वर्ण भी एक बयान के लिए बहुत जटिल हैं जब तक कि आपके पास कोई विकल्प नहीं है (एक कॉल जिसे मापदंडों के पूरे समूह की आवश्यकता है।)
मैं एक सामान्य नियम के रूप में 80 वर्णों का उपयोग करता हूं, लेकिन मैं इससे आगे निकल जाऊंगा, अगर इसे लागू करने का मतलब अवांछनीय स्थान पर लाइन ब्रेक लगाना होगा।
केवल एक चीज जो मैं 80 वर्णों के भीतर रहना चाहता हूं, वह मेरी टिप्पणी है।
व्यक्तिगत रूप से ... मैं अपनी सारी दिमागी शक्ति (जो कुछ कम है) को सही तरीके से कोडित करने के लिए समर्पित कर रहा हूं, यह एक दर्द है कि वापस जाने के लिए और 80 char की सीमा पर सब कुछ तोड़ने के लिए जब मैं अगले फ़ंक्शन पर अपना समय बिता सकता हूं । हाँ, Resharper मेरे लिए ऐसा कर सकता है जो मुझे लगता है, लेकिन फिर यह मुझे थोड़ा सा पता चलता है कि एक 3rd पार्टी उत्पाद मेरे कोड लेआउट पर निर्णय ले रहा है और इसे बदल देता है ("कृपया मेरे कोड को दो पंक्तियों में नहीं तोड़ें HAL। HAL?" )।
उन्होंने कहा, मैं काफी छोटी टीम पर काम करता हूं और हमारे सभी मॉनीटर काफी बड़े हैं, इस बात की चिंता है कि मेरे साथी प्रोग्रामर को इस बात की कोई चिंता नहीं है।
लगता है कि कुछ भाषाएं हिरन के लिए अधिक धमाके के लिए कोड की लंबी लाइनों को प्रोत्साहित करती हैं (शॉर्ट हैंड अगर स्टेटमेंट्स)।
मेरे पास दो 20 "1600x1200 मॉनिटर हैं और मैं 80 कॉलमों पर चिपका हूं क्योंकि यह मुझे कई टेक्स्ट एडिटर विंडोज़ को साइड-बाय-साइड डिस्प्ले करने देता है। '6x13' फॉन्ट (ट्रेडिशनल। xterm फॉन्ट) का उपयोग करते हुए 80 कॉलम 480 पिक्सल से अधिक का स्क्रॉल करते हैं। और विंडो बॉर्डर्स। यह एक 1600x1200 मॉनिटर पर इस प्रकार की तीन विंडो रखने की अनुमति देता है। खिड़कियों पर ल्यूसिडा कंसोल फ़ॉन्ट यह नहीं करेगा (न्यूनतम यूनेबल आकार 7 पिक्सेल चौड़ा है), लेकिन 1280x1024 मॉनिटर दो कॉलम प्रदर्शित करेगा एक 1920x1200 मॉनिटर जैसे कि HP LP2465 3 प्रदर्शित करेगा। यह विजुअल स्टूडियो से विभिन्न एक्सप्लोरर, प्रॉपर्टीज और अन्य विंडो के लिए थोड़ी सी जगह भी छोड़ देगा।
इसके अतिरिक्त पाठ की बहुत लंबी पंक्तियों को पढ़ना मुश्किल है। पाठ के लिए इष्टतम 66 वर्ण है। एक ऐसा बिंदु है जहां अत्यधिक लंबे पहचानकर्ता उल्टा होने लगते हैं क्योंकि वे कोड को समान रूप से रखना मुश्किल बनाते हैं। अच्छा लेआउट और इंडेंटेशन कोड संरचना के रूप में दृश्य संकेत प्रदान करता है और कुछ भाषाएं (पायथन मन में आती हैं) इसके लिए स्पष्ट रूप से इंडेंटेशन का उपयोग करें।
हालाँकि, जावा और .Net के लिए मानक श्रेणी के पुस्तकालयों में बहुत लंबे पहचानकर्ताओं का प्रसार होता है, इसलिए कोई भी ऐसा करने में सक्षम होने की गारंटी नहीं दे सकता है। इस स्थिति में, लाइन-ब्रेक के साथ कोड को बिछाने से अभी भी संरचना को स्पष्ट करने में मदद मिलती है।
ध्यान दें कि आप यहाँ '6x13' फोंट के विंडोज़ संस्करण प्राप्त कर सकते हैं ।
लोगों का कहना है कि कोड की लंबी लाइनें जटिल होती हैं। एक साधारण जावा वर्ग पर विचार करें:
public class PlaintiffServiceImpl extends RemoteServiceServlet implements PlaintiffService {
यह 94 वर्ण लंबा है और वर्ग नाम काफी छोटा है (GWT मानकों द्वारा)। 2 लाइनों पर पढ़ना मुश्किल होगा और यह एक पंक्ति पर बहुत पठनीय है। इसके बारे में व्यावहारिक होने के नाते और इस प्रकार "बैकवर्ड संगतता" की अनुमति देते हुए, मैं कहूंगा कि 100 अक्षर सही चौड़ाई है।
आप एकमात्र व्यक्ति नहीं हैं जो आपका कोड बनाए रखने वाले हैं।
अगले व्यक्ति के पास 17 "स्क्रीन हो सकती है या पाठ को पढ़ने के लिए बड़े फ़ॉन्ट की आवश्यकता हो सकती है। सीमा कहीं और होनी चाहिए और 80 वर्ण पिछले स्क्रीन सीमाओं के कारण सम्मेलन है। क्या आप किसी भी नए मानक (120) के बारे में सोच सकते हैं। क्यों यह एक अच्छा विचार है कि दूसरे का उपयोग करने के लिए "यही कारण है कि मेरे मॉनिटर पर Xpt फ़ॉन्ट पर फिट बैठता है?"
याद रखें, हमेशा हर नियम के अपवाद होते हैं, इसलिए आपके पास एक विशेष लाइन या कोड का ब्लॉक होता है, जो 80 से अधिक वर्णों के लिए समझ में आता है, फिर एक विद्रोही हो।
लेकिन सोचने के लिए पहले समय लें "क्या यह कोड वास्तव में इतना बुरा है कि यह 80 वर्णों के भीतर नहीं रह सकता है?"
लिनक्स कोडिंग मानक में, न केवल वे 80 अक्षर की सीमा रखते हैं, बल्कि वे 8 स्थान इंडेंटेशन का भी उपयोग करते हैं।
तर्क का हिस्सा यह है कि यदि आप कभी सही मार्जिन तक पहुंचते हैं, तो आपको एक इंडेंटेशन स्तर को एक अलग फ़ंक्शन में स्थानांतरित करने पर विचार करना चाहिए।
यह स्पष्ट कोड बना देगा क्योंकि इंडेंटेशन लंबाई की परवाह किए बिना, कई नेस्टेड कंट्रोल संरचनाओं के साथ कोड को पढ़ना मुश्किल है।
मैंने अपने कोड को 100 वर्णों तक चौड़ा किया है जो मेरी मैकबुक पर मेरी स्क्रीन के आधे से भी कम समय में आराम से फिट बैठता है। 120 वर्ण शायद बहुत लंबी और जटिल रेखाओं को शुरू करने से पहले की सीमा है। आप कंपाउंड स्टेटमेंट और डीप नेस्टेड कंट्रोल स्ट्रक्चर्स को प्रोत्साहित करने के लिए बहुत अधिक विस्तृत रूप से प्राप्त नहीं करना चाहते हैं।
सही मार्जिन एक अतिरिक्त विधि रीफ़ैक्टरिंग करने के लिए कहने का प्रकृति का तरीका है ।
मुझे आश्चर्य है कि अगर इस दिन और उम्र में अधिक समस्याएं हो सकती हैं। याद रखें कि C (और संभवत: अन्य भाषाओं में) के लिए नियम हैं कि फ़ंक्शन का नाम कितने समय तक हो सकता है। इसलिए, आप अक्सर सी कोड में बहुत कठिन-से-समझने वाले नाम देखते हैं। अच्छी बात यह है कि वे बहुत अधिक स्थान का उपयोग नहीं करते हैं। लेकिन हर बार जब मैं किसी भाषा में C # या Java जैसे कोड देखता हूं तो विधि के नाम अक्सर बहुत लंबे होते हैं, जो आपके कोड को 80 अक्षरों की लंबाई पर रखना असंभव बना देता है। मुझे नहीं लगता कि 80 वर्ण आज तक मान्य हैं, जब तक आपको कोड प्रिंट करने में सक्षम होने की आवश्यकता नहीं है, आदि।
अपने नियोक्ता के लिए कोडिंग दिशानिर्देशों के लेखक के रूप में मैंने 80 से 132 तक की लाइन की लंबाई का अनुमान लगाया है। यह मूल्य क्यों है? खैर, दूसरों की तरह बताया, 80 कई पुराने हार्डवेयर टर्मिनलों की लंबाई है। और 132 भी है! जब टर्मिनल विस्तृत मोड में हो तो यह लाइन की चौड़ाई होती है । कोई भी प्रिंटर संघनित फ़ॉन्ट के साथ विस्तृत मोड में हार्डकॉपी बना सकता है।
80 पर नहीं रहने का कारण यह है कि मैं बल्कि
struct FOO func(struct BAR *aWhatever, ...)
कोड में टाइप किए गए कट्टरपंथियों से अधिक है ।और इन नियमों के तहत सिर्फ 80 वर्ण / रेखा का कारण बदसूरत रेखा मेरी आंखों की तुलना में अधिक बार स्वीकार्य होती है (ज्यादातर प्रोटोटाइप और फ़ंक्शन परिभाषा में)।
जैसा कि अन्य लोगों ने कहा है, मुझे लगता है कि यह (1) प्रिंटिंग के लिए सबसे अच्छा है और (2) कई फाइलों को साइड से लंबवत प्रदर्शित करना।
मैं एक वाइडस्क्रीन मॉनिटर पर दो SxS संपादकों को अनुमति देने के लिए अपनी चौड़ाई को 100 वर्णों तक सीमित करना पसंद करता हूं। मुझे नहीं लगता है कि अब बिल्कुल 80 वर्णों की सीमा के लिए कोई अच्छा कारण है।
आनुपातिक फोंट का उपयोग करें।
मैं गंभीर हूँ। मैं आमतौर पर पठनीयता या मुद्रण क्षमता का त्याग किए बिना एक पंक्ति में 100-120 वर्णों की समानता प्राप्त कर सकता हूं। वास्तव में यह एक अच्छा फ़ॉन्ट (जैसे, वर्डाना) और वाक्यविन्यास रंग के साथ पढ़ना और भी आसान है। यह कुछ दिनों के लिए थोड़ा अजीब लगता है, लेकिन आप जल्दी से इसकी आदत डाल लेते हैं।
मैं एक सरल कारण के लिए चीजों को 80 के करीब रखने की कोशिश करता हूं: इससे बहुत अधिक इसका मतलब है कि मेरा कोड बहुत जटिल हो रहा है। वर्बोज़ प्रॉपर्टी / मेथड नेम, क्लास नेम, इत्यादि के रूप में बहुत नुकसान पहुंचाते हैं।
मैं मुख्य रूप से पायथन कोडर हूं, इसलिए यह सीमाओं के दो सेट का उत्पादन करता है:
जब आप इंडेंटेशन के दो या तीन स्तरों पर पहुंचने लगते हैं, तो आपका तर्क भ्रमित हो जाता है। यदि आप एक ही पृष्ठ पर एक ब्लॉक नहीं रख सकते हैं, तो आपका कोड याद रखने के लिए बहुत जटिल और पेचीदा हो रहा है। यदि आप 80 वर्णों के भीतर एक पंक्ति नहीं रख सकते हैं, तो आपकी रेखा अत्यधिक जटिल हो रही है।
पठनीयता की कीमत पर अपेक्षाकृत संक्षिप्त कोड (कोडगोल्फ देखें) लिखना पायथन में आसान है, लेकिन पठनीयता की कीमत पर वर्बोज़ कोड लिखना और भी आसान है। हेल्पर तरीके कोई बुरी बात नहीं है, न ही सहायक वर्ग हैं। अत्यधिक अमूर्तता एक समस्या हो सकती है, लेकिन यह प्रोग्रामिंग की एक और चुनौती है।
जब सी जैसी भाषा में संदेह हो तो हेल्पर फंक्शन लिखें और उन्हें इनलाइन करें यदि आप नहीं चाहते कि ओवरहेड किसी अन्य फ़ंक्शन को कॉल करें और वापस कूदें। ज्यादातर मामलों में, कंपाइलर आपके लिए समझदारी से चीजों को हैंडल करेगा।
मैं 80 वर्णों को लागू नहीं करने का मतलब है कि अंत में शब्द लपेटना।
IMO, अधिकतम-चौड़ाई लाइन के लिए चुनी गई कोई भी लंबाई हमेशा उपयुक्त नहीं होती है और वर्ड रैपिंग एक संभावित उत्तर होना चाहिए।
और यह उतना आसान नहीं है जितना कि यह ध्वनि है।
इसे जेडिट में लागू किया जाता है (स्रोत: jedit.org )
जो वर्ड रैप प्रदान करता है
लेकिन यह एक समय से पहले ग्रहण में कड़वा याद किया है ! (वास्तव में 2003 के बाद से), मुख्यतः क्योंकि टेक्स्ट एडिटर के लिए एक शब्द रैप शामिल है:
मैं वास्तव में अपने स्वयं के कोड के लिए एक समान नियम का पालन करता हूं, लेकिन केवल ए 4 पृष्ठ पर कोड को प्रिंट करने के कारण - 80 कॉलम मेरे स्वतंत्र आकार के लिए सही चौड़ाई के बारे में है।
लेकिन यह व्यक्तिगत पसंद है और शायद आप के बाद क्या नहीं थे (चूंकि आप बार-बार जाने के लिए बारूद चाहते हैं)।
आप सीमा के पीछे तर्क पर सवाल नहीं उठाते हैं - गंभीरता से, अगर कोई भी एक अच्छे कारण के साथ नहीं आ सकता है तो ऐसा क्यों है, आपके पास अपने कोडिंग मानकों से इसे हटाने के लिए एक अच्छा मामला है।
मैं दिन-भर अलग-अलग हूँ और मेरे पास 22 इंच का मॉनिटर नहीं है। मुझे नहीं पता कि मैं कभी करूंगा। यह, ज़ाहिर है, केवल तीर-कोडिंग और 300-चार लाइनों का आनंद लेने वाले प्रोग्रामर लिखने के लिए बहुत कम रुचि है।
मुझे अभी भी लगता है कि दृश्य भाग पर सीमा सीमित नहीं है। निश्चित रूप से, मॉनिटर और रिज़ॉल्यूशन आजकल एक पंक्ति में और भी अधिक वर्ण दिखाने के लिए पर्याप्त हैं, लेकिन क्या यह पठनीयता बढ़ाता है?
यदि सीमा को वास्तव में लागू किया जाता है तो यह कोड को फिर से सोचने और सब कुछ एक पंक्ति में न रखने का एक अच्छा कारण है । यह इंडेंटेशन के साथ समान है - यदि आपको बहुत अधिक स्तरों की आवश्यकता है तो आपके कोड को फिर से विचार करने की आवश्यकता है।
80 पात्रों को तोड़ना कुछ ऐसा है जो आप करते हैं कोडिंग करते हैं, बाद में नहीं। टिप्पणियों के साथ भी, बिल्कुल। अधिकांश संपादक यह देखने में आपकी सहायता कर सकते हैं कि 80-वर्ण की सीमा कहां है।
(यह थोड़ा ओटी हो सकता है, लेकिन एक्लिप्स में एक विकल्प है जो कोड को प्रारूपित करता है जब आप इसे सहेजते हैं (जो भी नियम आप चाहते हैं उसके अनुसार)। यह पहली बार में थोड़ा अजीब है, लेकिन थोड़ी देर बाद आप इसे स्वीकार करना शुरू करते हैं। स्वरूपण आपके हाथों में उत्पन्न कोड से अधिक नहीं है।)
अगर हम में से एक था इन , हम इस चर्चा होने नहीं होगा! ;-)
लेकिन गंभीरता से लोगों ने अपने जवाब में जो मुद्दे उठाए हैं वे काफी वैध हैं। हालाँकि मूल पोस्टर एक सीमा के विपरीत नहीं था, केवल 80 कॉलम बहुत कम थे।
ईमेल स्निपेट को ईमेल करने के मुद्दे में कुछ योग्यता है। लेकिन उन गलत चीजों को देखते हुए, जो ज्यादातर ईमेल क्लाइंट प्री-फॉर्मेट किए गए टेक्स्ट से करते हैं, मुझे लगता है कि लाइन रैपिंग केवल आपकी समस्याओं में से एक है।
जैसा कि मुद्रण के लिए मुझे आमतौर पर लगता है कि 100 वर्ण रेखाएं बहुत ही आराम से एक मुद्रित पृष्ठ पर फिट हो जाएंगी ।
मैं कोशिश करता हूं और अपनी लाइनें 80 कॉलम से नीचे रखूं। सबसे मजबूत कारण यह है कि मैं अक्सर कमांड लाइन पर काम करते समय अपने आप को उपयोग कर पाता हूं grep
और less
अपने कोड को ब्राउज़ करता हूं। मुझे वास्तव में पसंद नहीं है कि टर्मिनल लंबी स्रोत रेखाओं को कैसे तोड़ रहे हैं (वे सब उस नौकरी के लिए नहीं बने हैं)। एक और कारण यह है कि मुझे लगता है कि यह बेहतर लग रहा है अगर सब कुछ लाइन में फिट बैठता है और संपादक द्वारा नहीं तोड़ा जाता है। उदाहरण के लिए लंबे फ़ंक्शन कॉल के पैरामीटर एक-दूसरे और समान सामान के नीचे अच्छी तरह से संरेखित होते हैं।