2008-10-30 18 views
5

मैं Zend Framework coding standards के माध्यम से पढ़ रहा हूं, जहां वे कहते हैं कि कक्षा परिभाषाओं के बाद घुंघराले ब्रेस अगली पंक्ति पर होना चाहिए, "एक सच्चा ब्रेस फॉर्म"।अलग-अलग ब्रेस रूपों के पीछे तर्क क्या है?

class MyClass 
{ 
    function.... 
} 

मैं आमतौर पर एक ही लाइन पर ब्रेसिज़ है:

class OtherClass { 
    function ... 
} 

अगली पंक्ति ब्रेस डालने के लिए क्या कारण है? या किसी भी अन्य शैली का उपयोग, उस मामले के लिए?

उत्तर

7

व्यक्तिगत वरीयता वास्तव में एकमात्र असली "कारण" है।

+1

मुझे लगता है कि केवल "व्यक्तिगत वरीयता" से अधिक है। प्रोग्रामर मानव होने के नाते, संज्ञानात्मक प्रतिबंधों के अधीन हैं जो कुछ प्रारूप (जो भी हो) हमारे मस्तिष्क के लिए अधिक उपयोगी होंगे जब इसे "छवि" (उदाहरण के लिए, ब्लॉक में अलगाव) से जानकारी निकालने की आवश्यकता होती है। – Jorge

+0

इसके अलावा, मुझे आश्चर्य है कि हम आम तौर पर कोड में स्वरूपण मतभेदों पर चर्चा क्यों करते हैं, न कि XML जैसी अन्य मानक टेक्स्ट भाषाओं में। मुझे के एंड आर शैली (मूल प्रश्न में दूसरा वाला) में स्वरूपित एक्सएमएल को याद नहीं है। – Jorge

+0

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

1

उपयोगकर्ता वरीयता। यह वास्तव में कोई फर्क नहीं पड़ता है। जब मैंने PHP में विकसित किया, तो मैंने दूसरा विकल्प इस्तेमाल किया, लेकिन अब सी # का उपयोग करके, मैं पहले का उपयोग करता हूं।

7

मुझे लगता है कि आपके द्वारा वर्णित पहली शैली कक्षा की नाम को अपनी सदस्य परिभाषाओं से ऑफसेट करने में मदद करती है। कोड स्कैन करते समय यह कक्षा घोषणा के शीर्ष को अधिक आसानी से ढूंढने में मेरी सहायता करता है।

8

अपने आप से लाइनों पर ब्रेसिज़ होने से आंतरिक भाग को बाहरी हिस्से से दृष्टि से अलग करने में मदद मिलती है। इससे स्रोत कोड के माध्यम से त्वरित रूप से स्कैन करना और उनके आसपास के ब्लॉक को अलग करना आसान हो जाता है।

प्लस, उसी इंडेंटेशन स्तर पर ब्रेसिज़ होने से आंखों के लिए एक मैच ढूंढना आसान हो जाता है।

3

अक्सर उद्धृत कारण हैं:

  • आसान (पहला उदाहरण के लिए) उद्घाटन और समापन ब्रेसिज़
  • एक दूसरी लाइन बर्बाद मत करो (ताकि आप पर कोड का अधिक लाइनों फिट कर सकते हैं अप मैच के लिए स्क्रीन - दूसरा उदाहरण)

जैसा कि अन्य ने कहा है: यदि आप तीसरे पक्ष के कोड पर काम करते हैं, तो बस इसके सम्मेलनों का पालन करें। यदि आप अपने कोड पर काम करते हैं, तो आप जिस भी शैली को बेहतर पाते हैं उसका उपयोग करें।

1

वहां पहले से ही इस अत्यंत व्यक्तिपरक विषय पर अनेक विषयों रहे हैं ...

कुछ लोगों को इसके बारे में भावुक हैं, व्यक्तिगत रूप से मैं ब्रेसिज़ संरेखित की "पठनीय" विकल्प चुना है (मैं वास्तविक द्वारा इस्तेमाल किया संपत्ति के लिए भुगतान नहीं करते स्क्रीन पर मेरा कोड ... इसलिए कॉम्पैक्टनेस मुझे रूचि नहीं देता है) लेकिन जब मैं किसी अन्य शैली का उपयोग करके किसी प्रोजेक्ट में योगदान देता हूं, तो मैं अपने योगदान के आस-पास एक का उपयोग करता हूं।
टैब आकार, हार्ड बनाम मुलायम, आदि के लिए समान

0

वास्तविक कारण कोड कोड में एक समान दिखने वाला कोड होना है। दोनों शैलियों के उनके फायदे हैं, जो शैली "बेहतर" व्यक्तिगत वरीयता पर निर्भर करती है और भाषा और परियोजना में "पारंपरिक रूप से" क्या उपयोग किया जाता है।

यदि ब्रेसिज़ की एक शैली निर्धारित की जाती है, तो इसका उपयोग करें, और आपके आने से पहले उपयोग किए जाने वाले उपयोग का उपयोग करें। यदि आप एक नई परियोजना शुरू कर रहे हैं जो सामान्य रूप से पसंद की भाषा में उपयोग किया जाता है।

टैब बनाम रिक्त स्थान के लिए भी जाता है।

3

मुझे लगता है कि व्यक्तिगत या टीम परियोजनाओं पर कोडिंग शैली और नामकरण सम्मेलन ज्यादातर व्यक्तिगत स्वाद का विषय हैं (हालांकि यह बुद्धिमान है कि एक टीम एक कोडिंग शैली और नामकरण सम्मेलन को गोद लेती है)।

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

इस मामले पर अच्छा संसाधनों विकिपीडिया लेख निम्नलिखित हैं:

Indent Style

Programming Style

Naming Conventions

0

यह ऐसा मामला है जिस ब्रेस शैली आप का उपयोग करता है? नहीं। क्या इससे कोई फर्क पड़ता है कि एक ही प्रोजेक्ट या स्रोत फ़ाइल पर काम करने वाले हर कोई एक ही ब्रेस शैली का उपयोग करता है? नहीं; न केवल इससे कोई फर्क नहीं पड़ता, बल्कि यह उपयोगी है अगर ब्रेस शैली एक कोडर से अगले तक, एक ही फ़ाइल में भिन्न होती है।

"कोड का यह हिस्सा वास्तव में ऐसा क्यों करता है?"

"मुझे नहीं पता। यह केविन की हस्तलेख में है। चलिए उससे पूछें।"

संबंधित मुद्दे