2011-11-24 6 views
6

यहाँ मेरी iOS ऐप्लिकेशन से कोड का एक टुकड़ा है:आप उद्देश्य सी पैरामीटर्स के एक्सकोड के ऑटो इंडेंटेशन को कैसे ट्वीक करते हैं?

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Do you like my hat?" 
                message:@"If so, please help spread the word by rating our app now?" 
                delegate:nil 
              cancelButtonTitle:@"No Thanks" 
              otherButtonTitles:@"Sure!", @"Maybe Later", nil 
          ]; 

क्यों Xcode मांगपत्र लाइनों अब तक खूनी करता है? एक पुराने पर्ल, रूबी, और जावास्क्रिप्ट बंदर होने के नाते, मैं और अधिक इस तरह मैन्युअल रूप से इसे इंडेंट करने के लिए इच्छुक हो जाएगा:

UIAlertView *alert = [[UIAlertView alloc] 
     initWithTitle:  @"Do you like my hat?" 
     message:   @"If so, please help spread the word by rating our app now?" 
     delegate:   nil 
     cancelButtonTitle: @"No Thanks" 
     otherButtonTitles: @"Sure!", @"Maybe Later", nil 
    ]; 

तो पैरामीटर के नाम और मान सब बाईं ओर संरेखित, और दांतेदार केवल एक ही स्तर हैं (4 रिक्त स्थान मेरे लिए)। यह बहुत कम स्क्रीन रीयल-एस्टेट का उपयोग करता है, और इसकी संभावना कम है कि मुझे अपने मैकबुक एयर पर रैपिंग लाइनों (जो दूर-दराज के इंडेंट किए गए सामान को पढ़ने के लिए भी मुश्किल बनाती है) से निपटना होगा।

हालांकि, मुझे लगता है कि कुछ कारण ऐप्पल पहली विधि पसंद करता है, और इसलिए एक्सकोड इंडेंट इस तरह से है। या वहाँ है?

तो मैं दो प्रश्न:

  • आप अपने उद्देश्य सी कोड में मांगपत्र विधि मानकों पसंद करते हैं?
  • आप अपनी पसंदीदा इंडेंटेशन शैली के साथ प्रारूपित करने के लिए एक्सकोड कैसे बदलते हैं?

यहां एक पवित्र युद्ध शुरू करने की कोशिश नहीं कर रहा है; मैं उद्देश्य-सी प्रोग्रामर के बीच सबसे अच्छा प्रथाओं के बारे में अधिक उत्सुक हूं, एक्सकोड उन प्रथाओं के साथ कैसे मदद करता है, और यह पता लगाने के लिए कि डिफ़ॉल्ट तरीके से एक्सकोड के लिए कोई अच्छा कारण है या नहीं।


अद्यतन: टिप्पणीकर्ताओं और जवाब का कहना है कि डिफ़ॉल्ट स्वरूपण उनके कोलन में पैरामीटर संरेखित करता है। मुझे याद रखना चाहिए था कि पोस्ट करने से पहले, क्योंकि मैंने निश्चित रूप से इसे देखा है, और जब सबसे लंबी वस्तु इंडेंट नहीं होती है, तो यह बहुत अच्छी लग सकती है। लेकिन मुझे लगता है कि, आमतौर पर, सबसे लंबी वस्तु बहुत अधिक इंडेंट है। उदाहरण के लिए:

UIAlertView *alert = [[UIAlertView alloc] 
          initWithTitle:@"Do you like my hat?" 
           message:@"If so, please help spread the word by rating our app now?" 
           delegate:nil 
         cancelButtonTitle:@"No Thanks" 
         otherButtonTitles:@"Sure!", @"Maybe Later", nil 
         ]; 

वह क्यों है? यहां तक ​​कि अगर मैं उन्हें कोलों में संरेखित करना चाहता था (और मैंने उन्हें अक्सर ऐसा करने के लिए हाथ से स्वरूपित किया है), तो उन्हें बहुत इंडेंट करने के लिए मूर्खतापूर्ण लगता है। यह उद्घाटन कॉलन के स्तर पर इंडेंट करने का आग्रह क्यों करता है? क्यों न केवल इंडेंटेशन स्तर, समापन ब्रैकेट के साथ इंडेंटेशन "ब्लॉक" के अंत को दिखाने के लिए बाहर निकला? उदाहरण के लिए:

UIAlertView *alert = [[UIAlertView alloc] 
     initWithTitle:@"Do you like my hat?" 
       message:@"If so, please help spread the word by rating our app now?" 
      delegate:nil 
    cancelButtonTitle:@"No Thanks" 
    otherButtonTitles:@"Sure!", @"Maybe Later", nil 
]; 

यह the Google style guide's line length recommendation तुलना में एक बेहतर डिफ़ॉल्ट होने के लिए, कोई है?

क्या पैरामीटर को प्रारूपित करने के लिए एक्सकोड को ट्विक करने का कोई तरीका है?

+0

"कैसे आप इंडेंट करने के लिए पसंद करते हैं ..." है [नहीं एक अच्छा stackoverflow सवाल] (http://stackoverflow.com/faq#dontask)। "आप कैसे एक्सकोड को ट्विक करते हैं ..." के लिए, यह स्वचालित रूप से बहु-लाइन चयनकर्ताओं को अलग-अलग इंडेंट करने के लिए कोई विकल्प नहीं है। –

+0

एफडब्ल्यूआईडब्ल्यू, आप इनिट के पहले एक नई लाइन जोड़कर एक समान व्यवहार प्राप्त कर सकते हैं। यह कोलों को लाइन करने के लिए ऑटो इंडेंट्स। – jrturton

+0

@robmayoff: अच्छा बिंदु, धन्यवाद। मैंने सवाल अपडेट कर लिया है। – theory

उत्तर

5

1) उद्देश्य-सी इंडेंट सम्मेलन को कई मानदंड दिए जाने पर कोलन चिह्न पर गठबंधन किया जाता है।

उदाहरण

समारोह:

- (void)functionWithOne:(NSString *)one two:(NSString *)two tree:(NSString *)three; 

के लिए स्वरूपित किया जाना है:

- (void)functionWithOne:(NSString *)one 
        two:(NSString *)two 
        three:(NSString *)three; 

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

2) मुझे नहीं लगता (मुझे यकीन नहीं है) कि आप इसे xcode में बदल सकते हैं। ऐप्पल का सम्मेलन स्पष्ट है कि यह कैसा है।

संपादित करें: आमंत्रण। मैं personaly पहले पैरामीटर के साथ शुरू और की तरह बाकी संरेखित:

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Do you like my hat?" 
               message:@"If so, please help spread the word by rating our app now?" 
               delegate:nil 
             cancelButtonTitle:@"No Thanks" 
             otherButtonTitles:@"Sure!", @"Maybe Later", nil]; 
+0

हाँ, यह विधि घोषणाओं के लिए मेरी आंखों के लिए अच्छी तरह से काम करता है, लेकिन चालान नहीं। – theory

+0

हाँ, लेकिन यह एक पागल गहरी इंडेंटेशन है, और संकीर्ण स्क्रीन के अनुकूल नहीं है (जैसे कि मेरे मैकबुक एयर पर एक्सकोड में)। वास्तव में – theory

+0

सच है। मुझे लगता है कि एक्सकोड उच्च-रेज़ चौड़े स्क्रीन उपयोगकर्ताओं के लिए है: पी। मै मैकबुक प्रो 15 पर प्रोग्राम "और मुझे अभी भी लगता है कि मुझे चौड़ाई चाहिए। मुझे अभी भी एक आईमैक 27 चाहिए": पी – Justin

3

मुझे यकीन है कि कैसे Xcode में यह फ़ॉर्मेट करने के लिए नहीं कर रहा हूँ, लेकिन कोड स्वरूपण उपकरणों के लिए दो विकल्प हैं:

  1. उपयोग Uncristify, इसे कॉन्फ़िगर करने के लिए एक GUI टूल है: UncrustifyX
  2. Jetbrains से आईओएस/ओएसएक्स आईडीई ऐपकोड का उपयोग करें - इसमें कॉन्फ़िगर करने योग्य और स्वरूपण में बनाया गया है। स्क्रीनशॉट देखें।

AppCode code formatting tool

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