2008-10-23 17 views
5

मैं कुछ सी ++ कोड में अल्प विराम द्वारा सीमांकित सूची के लिए प्रयोग किया जाता है इस प्रारूप को देखा है (हालांकि यह किसी भी भाषा के लिए लागू हो सकते हैं):इस असाधारण स्वरूपण का क्या फायदा है?

void function( int a 
       , int b 
       , int c 
      ) 

मैं सोच रहा था किसी को क्यों प्रयोग करेंगे कि एक अधिक सामान्य प्रारूप पर इस तरह के रूप :

void function (int a, 
       int b, 
       int c 
      ) 

उत्तर

17

जब SQL कथन लिखने के एक बहुत प्रचलित कोडिंग शैली है कि:

SELECT field1 
    , field2 
    , field3 
-- , field4 
    , field5 
FROM tablename 

लाभ:

  • आप जोड़ने के लिए, हटाने, या कि अंतिम के बारे में चिंता किए बिना आसानी से क्षेत्रों को पुनर्व्यवस्थित करने देता है पीछे की ओर अल्पविराम।
  • आपको बाकी बयान को गड़बड़ किए बिना आसानी से एक पंक्ति (टीएसक्यूएल "-" का उपयोग करता है) पर टिप्पणी करता है।

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

उनमें से किसी एक को टिप्पणी करने की क्षमता विशिष्ट भाषा पर निर्भर करती है। सी ++ के बारे में निश्चित नहीं है। मुझे पता है कि वीबी.Net इसे अनुमति नहीं देगा, लेकिन ऐसा इसलिए है क्योंकि इसे लाइनों में बयानों को विभाजित करने के लिए निरंतरता वर्ण (_) की आवश्यकता होती है।

+0

दूसरी बिट किसी भी भाषा पर लागू होती है जिसमें "लाइन के अंत में टिप्पणी" मार्कर होता है। इसमें सी ++, सी #, जावा, जावास्क्रिप्ट, वीबी इत्यादि शामिल हैं। – AaronSieb

+0

... किसी भी भाषा जो सूची के अंत में एक खतरनाक 'सहन नहीं कर सकती', – Javier

+0

ठीक है, वीबी और वीबी.Net नहीं होगा आपको मनमाने ढंग से कई पंक्तियों पर बयान विभाजित करने दें, इसलिए यह तकनीक वहां काम नहीं करेगी। – BradC

3

पिछले पैरामीटर (लाइन) को डुप्लिकेट करके प्रारंभ में पैरामीटर जोड़ना आसान है।

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

1

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

+0

और यह देखते हुए कि आजकल कितनी आसान आइडियां अंतिम रेखा को डुप्लिकेट कर रही हैं, यह एक मणि हो सकती है। (netbeans ctrl + shift + down) – Midhat

3

मालिस?

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

0

मैं जानता हूँ कि जब मैं लपेट और एक एसक्यूएल में या बयान करता है, तो मुझे यकीन है कि बनाने के लिए कोशिश करते हैं और अगली पंक्ति की शुरुआत है।

अगर ए और बी
और सी

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

1

एक व्यक्तिगत पसंद की तरह मुझे लगता है।

1

फ़ाइल को त्वरित रूप से स्कैन करते समय, यह स्पष्ट है कि प्रत्येक पंक्ति जो अल्पविराम से शुरू होती है वह ऊपर की रेखा की एक निरंतरता है (एक रेखा की तुलना में जो उपर्युक्त से अधिक इंडेंट है)। (इस मामले में कृपया ध्यान दें, को तोड़ने 4 + 5 बेवकूफ है, लेकिन यह आवश्यक हो सकता है अगर आप एक जटिल गणित बयान है)

std::cout << "some info " 
    << "some more info " << 4 
    + 5 << std::endl; 

: यह निम्नलिखित शैली का सामान्यीकरण है।

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

std::vector<int> v = ...; 
std::vector<int> w = ...; 
for (std::vector<int>::iterator i = v.begin() 
     , std::vector<int>::iterator j = w.begin() 
     ; i != v.end() && j != w.end() 
     ; ++i, ++j) 
      std::cout << *i + *j << std::endl; 
1

कोई कारण नहीं, मुझे संदेह है कि यह सिर्फ व्यक्तिगत वरीयता का मामला है।

मैं व्यक्तिगत रूप से दूसरा विकल्प पसंद करूंगा।

void function (int a, 
       int b, 
       int c 
      ) 
2

एक और लाभ यह पहला उदाहरण में आप टिप्पणी से बाहर है कि सकता है या तो बी या सी लाइनों, और यह वाक्य रचना सही रहेगी है। दूसरे उदाहरण में, यदि आपने सी लाइन पर टिप्पणी करने का प्रयास किया है, तो आपके पास वाक्यविन्यास त्रुटि होगी।

अगर आप मुझसे पूछें तो बदसूरत बनाने के लायक नहीं है।

1

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

वही होता है यदि आप अंतिम पैरामीटर को हटा रहे हैं।

1

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

1

ऐसा लगता है कि यह आसानी से नए पैरामीटर को टिप्पणी करने या जोड़ने की क्षमता के आसपास के अधिकांश उत्तर केंद्र जैसा लगता है। लेकिन ऐसा लगता है कि आप शुरू करने के बजाय पंक्ति के अंत में अल्पविराम डाल के साथ एक ही प्रभाव प्राप्त:

function(
      int a, 
      int b, 
//   int c, 
      int d 
     ) 

आप कह सकते हैं आप पिछले पैरामीटर के लिए ऐसा नहीं कर सकते कि, और आप हो जाएगा सही है, लेकिन किसी अन्य तरीके से, आप इसे पहले पैरामीटर के लिए ऐसा नहीं कर सकते:

function (
//    int a 
      , int b 
      , int c 
      , int d 
     ) 

तो दुविधा बनाम पिछले पैरामीटर + जा रहा है बाहर टिप्पणी करने के लिए सक्षम किया जा रहा पहले पैरामीटर बाहर टिप्पणी करने में सक्षम किया जा रहा है पिछले अंतिम पैरामीटर में अल्पविराम जोड़ने के बिना नए पैरामीटर जोड़ने में सक्षम।

+0

मुझे लगता है कि कई मामलों में, कुछ पैरामीटर होने जा रहे हैं जो वास्तव में बदलने या निकालने की संभावना नहीं है (जैसे 'रिकॉर्ड आईडी' जैसी चीजें) और उन पैरामीटर को अंतिम से पहले सूचीबद्ध होने की अधिक संभावना है। – supercat

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