2010-02-10 19 views
8

अन्य लोगों के कोड को देखते हुए यह घुंघराले ब्रेस ब्लॉक के अंदर एक अतिरिक्त जगह शामिल करना वास्तव में आम लगता है। क्या इसका कोई कारण है? मेरे लिए यह अतिरिक्त कुरूपता के लिए अतिरिक्त कीस्ट्रोक जोड़ने लगता है। खास तौर पर जब चीजें नेस्ट हो:रुबी व्हाइटस्पेस: {{a => 1} {: a => 1} से बेहतर है?

lambda { (1..5).map { |i| { :a => { :b => i } } } } 

किसी कारण यह सिर्फ अधिक संक्षिप्त और सुसंगत करने के लिए लग रहा है के लिए:

lambda {(1..5).map {|i| {:a => {:b => i}}}} 

हो सकता है कि अतिरिक्त रिक्त स्थान कुछ पाठ संपादक पक्ष प्रभाव हैं या वहाँ एक ऐतिहासिक कारण है या कुछ कुछ? मैंने इसे स्टाइल गाइड में संबोधित नहीं देखा है और यदि यह 2 स्पेस इंडेंटेशन की तरह है, तो मैं सम्मेलनों का पालन करना चाहता हूं, लेकिन अगर कोई अच्छा कारण नहीं है तो मुझे लगता है कि मैं केवल अपने तरीके से काम करना जारी रखूंगा। आप कौन सा पसंद करते हैं और क्यों?

+3

आप इस समुदाय विकी को बनाना चाहते हैं, क्योंकि यह बहुत ही व्यक्तिपरक है। –

+0

घुंघराले ब्रेसिज़ दोनों ब्लॉक और हैंश को इंगित कर सकते हैं। –

+0

मुझे लगता है कि मैं उम्मीद कर रहा था कि यह इतना व्यक्तिपरक नहीं होगा, कि वैध तर्क द्वारा समर्थित एक स्पष्ट सही उत्तर होगा। – eremite

उत्तर

5

रूबी कोड मैं देख रहा हूँ के अधिकांश (और उम्मीद है कि सभी कोड मैं लिखने) इस शैली का उपयोग करता है:

{ :key => 'value' } 

यह है कि मैं क्या मिल गया है करने के लिए इस्तेमाल और भली भाँति है।

जब सब कुछ कहा और किया जाता है, तो यह एक विशेष शैली मुद्दा सबसे महत्वपूर्ण नहीं है। उस ने कहा, रुबी समुदाय (दूसरों के रूप में) का मानना ​​है कि जिस परियोजना के साथ आप काम कर रहे हैं और (बी) पूरी तरह से कोड के समुदाय के लिए अपनी शैली (ए) से मेल खाना महत्वपूर्ण है। यही कारण है कि मैं अतिरिक्त सफेद रिक्त स्थान का उपयोग करने की सलाह देते हैं। http://www.caliban.org/ruby/rubyguide.shtml#style

+0

इसलिए मैंने आपकी सलाह ली और गिटूब पर शीर्ष देखी गई रूबी परियोजनाओं पर कुछ सरल नियमित अभिव्यक्तियां चलाईं। और यह पता चला है कि ब्लॉक हमेशा अतिरिक्त जगहों को शामिल करते हैं जबकि आमतौर पर हैश करते हैं, लेकिन हमेशा नहीं। नीचे दिए गए कुछ संयोजन दृष्टिकोण दिलचस्प थे लेकिन व्यापक रूप से अनुकूल या तत्काल स्पष्ट प्रतीत नहीं होते हैं, इसलिए मैंने बहुमत की इच्छा को प्रस्तुत करने का निर्णय लिया है और अतिरिक्त जगहों का उपयोग करने के लिए अपनी शैली बदल दी है (और रूबी 1.9 हैश की उम्मीद है कि उन्हें जरूरत नहीं है, क्योंकि मेरघोस्ट बताता है)। – eremite

0

मैं रूबी प्रोग्रामर नहीं हूं, लेकिन अगर मैं उनके बीच कुछ और कर रहा हूं, तो मैं ब्रैकेट/कोष्ठक के बाद अतिरिक्त जगह डालता हूं - यानी अगर किसी फ़ंक्शन के लिए तर्क या अतिरिक्त गणना के रूप में अतिरिक्त गणना होती है।

तो मैं कहूंगा - हालांकि मैं रूबी प्रोग्रामर नहीं हूं - जैसा कि आप चाहते हैं/अपने नियोक्ता के रूप में करें (यदि आप फ्रीलांसर/शौकिया नहीं हैं) चाहें।

3

शैली की तरह ही लगता है। मुझे लगता है कि वे बदसूरत हैं, अतिरिक्त रिक्त स्थान छोड़ दें।

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

+3

बहुत सी चीजें शैली की बात हैं - लेकिन शैली पर किसी व्यक्ति की वरीयता केवल एकमात्र (या यहां तक ​​कि प्राथमिक) कारक नहीं है। मुख्य सवाल यह है कि रूबी समुदाय के साथ मिलकर एक शैली का उपयोग कैसे करें। ऐसा करने से आपका कोड पढ़ने में आसान हो जाएगा और आपको समुदाय में अधिक सम्मान मिलेगा। –

+1

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

1

उदाहरण आपको बताएंगे कि शैली की बात है:

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

[1,2,3].slice (2) 

डाल दिया, रूबी आप एक चेतावनी देता है

चेतावनी: पहले तर्क

कोष्ठकों तो नहीं डाल अंतरिक्ष करते हैं, मुझे लगता है कि रूबी है कोष्ठक के बारे में भावुक, लेकिन ब्रेसिज़ नहीं।

+2

आप सेब और संतरे की तुलना कर रहे हैं। @eremite वार्ता के बारे में वे जगहें * घुंघराले के भीतर हैं, न कि बाहर की ओर। आप अग्रणी (और शायद पीछे) रिक्त स्थान के बारे में बात कर रहे हैं। तुम्हारा एक समान उदाहरण '1,2,3] होगा .इसिस (2)' – Zano

+0

इसलिए शब्द "हालांकि" – dbrown0708

3

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

lambda {(1..5).map {|i| {:a => { :b => i }} }} 

मुझे पसंद है कि यह कैसे रिक्ति भीतरी हैश (वापसी मान) सेट, बिना यह बहुत smushed महसूस कर रही है, और अनुगामी }} आप देखते हैं कि यह घोंसले के दो स्तर से encased सहायता मिलती है।

0

एक बिंदु तक, मुझे लगता है कि यह व्यक्तिगत स्वाद का विषय है। आम तौर पर मुझे सफेद जगह जोड़ने में पठनीयता में मदद मिलती है - लेकिन हमेशा नहीं। अपने उदाहरण में, व्यक्तिगत रूप से, मैं करूंगा:

lambda{ (1..5).map{ |i| {:a=>{:b=>i}} } } 
बेशक

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

यदि आप अन्य लोगों के समूह के साथ कोडिंग कर रहे हैं - या रूबी समुदाय को अपना कोड दिखाने के विशिष्ट उद्देश्य के लिए - आपको यह भी विचार करना होगा कि उन्हें क्या पठनीय मिलेगा।

लेकिन मुझे यकीन नहीं है कि मैं दृढ़ता से परवाह करता हूं कि मेरा उदाहरण "सामान्य रूबी स्पेसिंग" है या नहीं।

0

हैश की शुरुआत/समाप्ति पर अतिरिक्त स्थान शायद बनाया गया था अच्छी शैली/मूल्यों पर पठनीयता में सुधार करने के लिए अच्छी शैली जो किसी भी चीज़ के साथ शुरू/समाप्त होती है।

{:a => "b"} #is less readable than 
{ :a => "b" } #more readable. 

कर्ली कोष्ठक के लिए जिम्मेदार ठहराया भाग में, मैं शायद ही कभी रिक्त स्थान रूबी ([]) में हैश के शुरू में देखना यह है।
नए हैश वाक्य रचना रूबी 1.9 में शुरू की शायद इस

{a: "b"} #same as {:a => "b"} 
0

संशोधन नहीं करेगा मैं हमेशा सोचा है यह सबसे घुंघराले ब्रेस ब्लॉक के अंदर अतिरिक्त स्थान शामिल करने के लिए पठनीय था, लेकिन पिछले अंतरिक्ष छोड़ देते हैं, तो पूर्ववर्ती चरित्र है एक बंद ब्रेस। अपने उदाहरण का उपयोग करने के लिए:

lambda { (1..5).map { |i| { :a => { :b => i }}}} 
+1

पूरी तरह से व्यक्तिपरक है, लेकिन असमानता मुझे बग करता है। –

0

IMHO, ज्यादातर मामलों में रिक्त स्थान के रूप में syntatic शोर से व्यवहार करते हैं और टाइप करने के लिए कष्टप्रद रहे हैं ... मैं इसे उन लोगों के साथ गहरे लाल रंग का समुदाय के नवीनतम जुनून आश्चर्य की बात लगता है, कुछ लोगों को लगता है कि देखभाल के साथ उनके बारे में 10 साल बाद मानक के रूप में उन्हें इस तरह के मानक के साथ लागू करने की कोशिश कर रहे हैं ....

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