क्यों न दोनों?
सबसे पहले, "वर्णनात्मक" और "क्रिया" समान नहीं हैं। उदाहरण के लिए, यदि आप एक काफी स्थानीय लूप लिख रहे हैं, तो i
लूप वेरिएबल के लिए एक बहुत अच्छा चर नाम है; current_iteration_index
, जबकि यकीनन अधिक वर्णनात्मक और निश्चित रूप से अधिक क्रिया, बहुत बुरा है और किसी भी जानकारी को नहीं जोड़ता है, क्योंकि इसका उपयोगi
लूप चर रूप बहुत अधिक सार्वभौमिक रूप से स्वीकार किया जाता है, और इसके अलावा कोई अन्य अर्थ नहीं i
है।
अच्छे चर नाम वर्णनात्मक होते हैं, जिसमें भाषा के मुहावरे और कोडबेस की परंपराओं से परिचित एक प्रोग्रामर आसानी से अनुमान लगा सकता है कि उनकी भूमिका क्या है, लेकिन वे चीजों को कॉम्पैक्ट रखने के लिए पर्याप्त रूप से संक्षिप्त भी हैं।
मूल रूप से 1970 के पाठ टर्मिनलों की तकनीकी सीमाओं के परिणामस्वरूप 80-वर्ण की सीमा, आज भी कई लोगों द्वारा मूल्यवान है, और भले ही अभी भी तकनीकी कारण हैं (कुछ नेटवर्क प्रोटोकॉल में अधिकतम लाइन लंबाई, सबसे विशेष रूप से ई-मेल से संबंधित), अधिक सम्मोहक कारण मनोवैज्ञानिक और सामाजिक हैं। यह पता चलता है कि प्राकृतिक-भाषा गद्य के लिए सबसे आरामदायक पढ़ने के अनुभव के लिए 66 वर्ण चिह्न के चारों ओर लाइन की लंबाई (फ़ॉन्ट आकार दिलचस्प रूप से बहुत अंतर नहीं करता है, और नतीजतन, न तो स्क्रीन या पेपर का आकार होता है); 80-वर्ण रेखा की सीमाएं उसके बहुत करीब हैं, लेकिन चूंकि कोड के एक विशिष्ट टुकड़े का थोक आमतौर पर कम से कम एक या दो स्तरों (जो 4 और 16 वर्णों के बीच का अर्थ होता है, इंडेंटेशन सेटिंग्स के आधार पर) के लिए प्रेरित होता है,
80-वर्ण वाली रेखाओं से चिपके रहने का एक और प्रभाव यह है कि जब चीजें बहुत जटिल होती हैं तो यह बहुत अच्छा संकेतक होता है। आम तौर पर निम्न में से एक के कारण होने वाली लाइनें:
- तर्कों की लंबी सूची के साथ कार्य; यह एक अच्छी बात नहीं है, क्योंकि वे पठनीयता को बाधित करते हैं और आसानी से सूक्ष्म कीड़े पैदा कर सकते हैं, उदाहरण के लिए जब लोग तर्क क्रम को स्वैप करते हैं ताकि कंपाइलर पकड़ न सके।
- जटिल अभिव्यक्ति, अक्सर सशर्त में पाए जाते हैं (जैसे
if ((user.isLoggedIn && user.hasPermission(page.getRequiredPermission()) && !user.isBanned) || page.getRequiredPermission() == null)
); यह भी, आमतौर पर समझने के लिए कठिन है, और कोड को कुछ और संरचित में फिर से लिखना चाहिए। सबसे अधिक संभावना है, अभिव्यक्ति बहुत अधिक है और इसे एक विधि या फ़ंक्शन में विभाजित किया जाना चाहिए।
- फंक्शन कॉल या एक्सप्रेशन में इस्तेमाल होने वाले लंबे शाब्दिक, जैसे
print(translate(LANG_EN, LANG_ES, "This is the home page. Feel welcome to click around and see what we have."));
। शाब्दिक को एक चर या स्थिर में स्थानांतरित करें; यह अभी भी लाइन की लंबाई को पार कर सकता है, लेकिन यदि आप इसे लगातार करते हैं, तो पाठक लाइन के अदृश्य भाग को कम से कम सुरक्षित रूप से अनदेखा कर सकता है, यह मानते हुए कि केवल शाब्दिक शेष है। या बेहतर अभी तक, शाब्दिक कोड से बाहर और एक बाहरी डेटा स्टोर (फ़ाइल, डेटाबेस, जो भी हो) में स्थानांतरित करें।
if
एक कक्षा विधि में बयानों के छह स्तरों (जैसे कि विशिष्ट सेटिंग्स के लिए इंडेंटेशन के 32 कॉलम) को गहराई से नेस्टेड स्टेटस । फिर से, गहरे घोंसले के शिकार जटिल और कठिन पढ़ने के लिए कोड बनाता है, और प्लेग की तरह बचा जाना चाहिए - बस, गहरी घोंसले के शिकार पढ़ने के दौरान मानव मस्तिष्क के ढेर को ओवरफ्लो करता है।
ये सब अंततः उन चीज़ों के लक्षण हैं जिन्हें आप लंबे समय तक अपने कोड बेस में नहीं रखते थे, और 80-वर्ण सीमाओं को लागू करना एक अच्छा और सरल तरीका है जो जटिलता और पठनीयता को बनाए रखने में मदद करता है। (यह कहना है कि आप 80 स्तंभों में पूरी तरह से अपठनीय कोड नहीं लिख सकते हैं: विभिन्न obfuscated- कुछ-कोड प्रतियोगिता एक स्पष्ट काउंटर-उदाहरण हैं)।