2010-10-21 11 views
5

यह कैसे सम्मेलन बन गया कि किसी विधि की घोषणा में कोई सफेद जगह नहीं है?ओबज-सी विधि घोषणाओं में किसी भी सफेद जगह को डालने का सम्मेलन कैसे हुआ?

-(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath 

ऐसा लगता है कि हर कोई यह करता है की तरह है, उदाहरण मैं देख रहा हूँ के 90%, उत्पन्न टेम्पलेट्स, अन्य लोगों के कोड, आदि, आदि मुझे लगता है यह सिर्फ एक और vi है/वैचारिक बात Emacs, लेकिन अगर शायद सोचा एक K& आर व्यवहार के लिए "मूल कारण" था।

- (UITableViewCell*) tableView: (UITableView*) tableView 
     cellForRowAtIndexPath: (NSIndexPath*) indexPath 

यह मेरे लिए इतना बेहतर लगता है:

मैं, मैं खाली स्थान के बहुत से पसंद है।

+1

अरे। आप सही हे। प्रोजेक्ट बिल्डर (एक्सकोड से पहले) में भी वरीयता सेटिंग थी जो स्वचालित रूप से आपके लिए कोलन को संरेखित कर देगी। मुझे एक्सकोड में यह नहीं मिल रहा है - कम से कम नहीं जहां यह होता था।मैंने संक्रमण कभी नहीं देखा। लेकिन अब मुझे याद आती है। –

+0

@ विशेष रूप से कोई नहीं - मुझे स्वचालित सेटिंग नहीं मिल सकती है, हालांकि, यदि आप पैरामीटर के बाद रिटर्न दबाते हैं, तो वह उस पंक्ति के लिए कॉलन को लाइन करेगा। अभी भी अप्रिय है, लेकिन यदि आप वास्तव में इसे याद करते हैं, तो इसके लिए रडार फ़ाइल करें (http://bugreport.apple.com)। एक्सकोड 4 अभी सक्रिय विकास में है ... शायद वे इसे छीन सकते हैं :) –

+2

आपका उदाहरण वास्तव में सामान्य से अधिक सफेद जगह गायब है। हस्ताक्षर आमतौर पर '(UITableView *)' (स्पेस नोट) जैसे प्रकारों का उपयोग करते हैं, साथ ही अग्रणी के बाद एक स्थान भी उपयोग करते हैं। किसी भी मामले में, दो संभावित कारण हैं। पहला वह लोग है जो कठोर-लपेट नहीं लेता है जब तक कि रेखा एक निश्चित लंबाई (जैसे मेरे जैसे लोग) गुजरती है, और दूसरी बार बड़ी संख्या में ओब्जे-सी इंजीनियरों की संख्या बड़ी संख्या में एक्सकोड की सॉफ्ट-रैपिंग चालू होती है और कभी भी कठिन नहीं होती है। लाइनों को लपेटो। –

उत्तर

3

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

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

सबसे पहले मैंने जो कुछ सूचीबद्ध किया है - सबकुछ के बाद रिक्त स्थान। हालांकि यह किसी भी सफेद जगह के रूप में लगभग उतना ही बुरा नहीं हुआ। चूंकि वहां हर जगह रिक्त स्थान थे, इसलिए वे व्यर्थ हो गए। मैंने अगली बार कोलन के बाद और परम के बाद रिक्त स्थान डालने का प्रयास किया, लेकिन यह सही नहीं लग रहा था - फ़ंक्शन का नाम और पैरामीटर कुछ मामलों में भ्रमित हो जाना शुरू कर दिया। मैंने कुछ अन्य सफेद जगहों की शैलियों की कोशिश की और आखिरकार सेब के मानक का उपयोग करने के लिए वापस आ गया। एकमात्र चीज जो मैं अब अलग करता हूं वह रिटर्न प्रकार है - मैं + या - और वापसी प्रकार के बाद एक जगह के बाद एक जगह रखना पसंद करता हूं। यहां तक ​​कि यह एक सौदा का बड़ा नहीं है, किसी भी विशिष्ट कठिनाई के बजाय ज्यादातर व्यक्तिगत वरीयता है। (एक भारी सी/सी ++ पृष्ठभूमि होने के कारण मुझे एक नज़र में वापसी प्रकार देखने में सक्षम होना पसंद है।)

यदि आप इसे रखते हैं तो आप अचानक खुद को सेब के रास्ते को पसंद करेंगे। =)

1

अधिकांश चयनकर्ता इतने कम हैं कि आपको प्रत्येक तर्क को अपनी लाइन पर रखने की आवश्यकता नहीं है। इसे कुछ उपयोग करने की ज़रूरत है, लेकिन रिक्त स्थान के बिना, पठनीयता वास्तव में बहुत बेहतर हो जाती है। की तुलना करें:

- (id) actionWithParam: (id) param object: (id) someObject andMore: (id) another 

- (id)actionWithParam:(id)param object:(id)someObject andMore:(id)another 

पहली पंक्ति में अपने दिमाग इच्छा समूह सामान

param object: (id) 

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

+0

टिप्पणी के लिए धन्यवाद w.m. मैं संक्षिप्त चयनकर्ता और प्रकार के नामों के बारे में अपना बिंदु देख सकता हूं। उन्हें एक साथ क्रैम करना उन्हें अनजाने में समूहित करता है। यह सुनिश्चित नहीं है कि मैं इस बात से सहमत हूं कि मेरा दिमाग चीजों को कैसे समूहीकृत करेगा, मेरा कोई सुसंगत समूह नहीं लगता है, यहां तक ​​कि नो-व्हाइटस्पेस संस्करण के साथ, मैं बस इसे पढ़ने में काफी समय बिताता हूं। और यह विशेष रूप से लंबे प्रकार के नामों में एक समस्या है, जैसा कि आप कोको में कई वर्गों में देखते हैं, विशेष रूप से प्रतिनिधि प्रोटोकॉल जहां पहला परम एक ऑब्जेक्ट संदर्भ है, प्रोटोकॉल में दोहराया जाता है। – jbm

0

उद्देश्य-सी में अच्छे प्रथाओं में प्रत्येक विधि की तुलना में एक अनुमान और एक प्रकार का विवरण होना चाहिए (तालिका दृश्य: cellForRowAtIndexPath :) इसलिए पैरामीटर आमतौर पर विधि नाम के पिछले भाग से बंधे होते हैं। आशा है कि यह समझ में आता है।

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