यह बहुत ही एकमात्र कोड स्वरूपण नियम है जो मैंने पाया है कि वास्तव में पठनीयता पर ध्यान देने योग्य प्रभाव पड़ता है और यह लगभग कोई प्रयास नहीं करता है (यह मानते हुए कि आपका कोड संपादक आपके साथ लड़ाई शुरू नहीं करता है)।
यह अच्छा प्रोग्रामिंग लैंग्वेज डिज़ाइन है, जिसका नाम घोषणाओं / परिभाषाओं में एक सुसंगत स्थिति में दिखाई देता है। तर्क सीधा है: आपके पास एक अच्छा दृश्य एंकर (एक घुंघराले ब्रेस या बस एक फांसी इंडेंटेशन) है जिसका उपयोग आप तुरंत नाम की शुरुआत का पता लगाने के लिए कर सकते हैं। फ़ाइल को नाम खोजने के दौरान स्कैन करने पर आपको वास्तव में भाषा को पार्स नहीं करना पड़ता है।
यह वैसा ही है जब आप किसी दस्तावेज़ को प्रारूपित कर रहे हैं: जब आप एक नया खंड शुरू करते हैं, तो आप नाम को बोल्डफेस में रखते हैं - अक्सर अपनी स्वयं की लाइन पर - कहीं दफनाया नहीं जाता, उदासीन, लंबे वाक्य में।
प्रारंभिक सी में बहुत ही प्रतिकूल हस्ताक्षर थे: वापसी प्रकार वैकल्पिक थे और हस्ताक्षर के बाद तर्क प्रकार घोषित किए गए थे। नाम भी बहुत कम थे। इसने कभी-कभार रिटर्न टाइप नाम के होने के प्रभाव को कम कर दिया।
double dot(x, y);
अभी भी बहुत सुपाच्य है।
C ++ ने इसे थोड़ा बदतर बना दिया। इसने हस्ताक्षर में तर्क प्रकार के विनिर्देशों को हस्तांतरित कर दिया जिससे हस्ताक्षर अधिक लंबे हो गए। इस सिंटैक्स को बाद में सी के मानकीकरण के दौरान अपनाया गया था।
static struct origin *find_origin(struct scoreboard *sb,
struct commit *parent,
struct origin *origin)
कम सुपाच्य है, लेकिन बहुत बुरा नहीं है। (गिट से अंश)
अब लंबे, वर्णनात्मक नामों और पैरामीरिज्ड प्रकारों के साथ आधुनिक प्रोग्रामिंग प्रथाओं पर विचार करें और देखें कि यह विकल्प कैसे विनाशकारी हो गया है। बूस्ट हैडर से एक उदाहरण:
template <class A1, class A2, class A3, class A4, class A5, class A6>
inline typename normalise<policy<>, A1, A2, A3, A4, A5, A6>::type make_policy(const A1&, const A2&, const A3&, const A4&, const A5&, const A6&)
{
typedef typename normalise<policy<>, A1, A2, A3, A4, A5, A6>::type result_type;
return result_type();
}
यदि आप सामान्य कोड लिख रहे हैं, तो हस्ताक्षर ऐसे हैं जो सामान्य से बाहर भी नहीं हैं। आप बहुत कठिन प्रयास किए बिना इससे भी बदतर मामलों के उदाहरण पा सकते हैं।
सी, सी ++ और उनके डेरिवेटिव, जावा और सी #, पठनीय घोषणाएं / परिभाषाएं होने के अपवाद प्रतीत होते हैं। उनके लोकप्रिय पूर्ववर्तियों और साथियों (फोरट्रान, ALGOL, पास्कल) ने परिणाम प्रकारों से पहले नाम रखे और, शुक्र है, उनके कई उत्तराधिकारियों (गो, स्काला, टाइपस्क्रिप्ट, और स्विफ्ट का नाम कुछ) ने अधिक पठनीय वाक्यविन्यास भी चुना है।