2016-04-19 12 views
6

मैं समारोह के एक समूह को इंडेंट की इस आदत इस तरह कॉल:इंडेंट समूह चर समारोह कॉल कोड सम्मेलन

List <Dog> dogs = new ArrayList<>(); 
    dogs.add(new Dog(1)); 
    dogs.add(new Dog(2)); 
    dogs.add(new Dog(3)); 
    dogs.add(new Dog(4)); 
    dogs.add(new Dog(5)); 
System.out.println("list of dogs: " + dogs); 
Cat cat1 = new Cat(1); 
    cat.meow(); 
    cat.startsRunningFrom(dogs); 
Dog d1 = dogs.get(1); 
d1.catches(cat1); 

एक कोड सम्मेलन में इन वास्तव में एक बुरा प्रथाओं हैं, या इन वास्तव में नहीं बात की जा रही है के बारे में? क्योंकि मैंने कुछ कोड सम्मेलनों को खोजने का प्रयास किया है जो कुछ चर/वर्ग से फ़ंक्शन कॉल पर ऐसे इंडेंटेशन की अनुशंसा करेंगे।

मेरे लिए, इसके बाद के संस्करण कोड के बिना की तुलना में अधिक पठनीय है:

List<Dog> dogs = new ArrayList<>(); 
dogs.add(new Dog(1)); 
dogs.add(new Dog(2)); 
dogs.add(new Dog(3)); 
dogs.add(new Dog(4)); 
dogs.add(new Dog(5)); 
System.out.println("list of dogs: " + dogs); 
Cat cat1 = new Cat(1); 
cat.meow(); 
cat.startsRunningFrom(dogs); 
Dog d1 = dogs.get(1); 
d1.catches(cat1); 

मेरे लिए indentations चर पर निम्नलिखित कसकर संबंधित कार्यों के साथ, चर घोषणाओं और अन्य समारोह संचालन से स्पष्ट अलगाव प्रदान करते हैं।

कर सकते हैं क्यों यह एक बुरा व्यवहार है सब पर, या यदि वह उपलब्ध कराई कोड आम तौर पर स्वीकार्य बाहर है (एक सूची के संचालन के बाहर) पर किसी टिप्पणी।

उत्तर

2

क्या ये वास्तव में कोड सम्मेलन में एक बुरे प्रथा हैं, या इनके बारे में वास्तव में बात नहीं की जा रही है?

खैर, यह निर्भर करता है! यदि आप ओपन सोर्स पर काम कर रहे हैं तो आपको दिशानिर्देशों के साथ काफी कुछ करना होगा। जब तक आपके साथियों के साथ ठीक न हो, तब तक बुरा/अच्छा नहीं है।

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

अन्य बात यह है कि, मैं इतना करने के लिए आम तौर पर स्वीकार परंपराओं को देखने का इस्तेमाल किया कर रहा हूँ यह है कि कोड के नीचे शुरू करने और एक ब्लॉक के अंत संभालने में टुकड़ा चाल मुझे।

List<Dog> dogs = new ArrayList<>(); 
----> dogs.add(new Dog(1)); 
     dogs.add(new Dog(2)); 
     dogs.add(new Dog(3)); 
     dogs.add(new Dog(4)); 
     dogs.add(new Dog(5)); <---- 
System.out.println("list of dogs: " + dogs); 

ऐसे सम्मेलनों का प्रयोग करने में कोई बुराई नहीं है, लेकिन जैसा कि मैंने पहले कहा, यह वातावरण जिसमें आप काम कर रहे हैं में अपने साथियों द्वारा स्वीकार किया जाना चाहिए।

+0

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

2

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

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

इसके अलावा, यदि आपके पास एक सूची है और इसमें कई आइटम जोड़ रहे हैं, तो आपको Google Guava में देखना चाहिए, जिसमें कॉल के साथ एक सूची स्थापित करने के कुछ तरीके हैं जो तर्कों की एक चर संख्या लेते हैं (जैसे Lists class

1

इस में newArrayList कुछ हद तक राय की बात है/टीम के विवेक पर। हालांकि, मैं मानता हूँ कि अपने खरोज कोई खरोज से बेहतर है। मुझे लगता है कि न तो है सबसे अच्छा समाधान। कैसे के बारे में यह :

List<Dog> dogs = initializeDogs(); 
System.out.println("list of dogs: " + dogs); 
initializeCat(dogs); 
Dog d1 = dogs.get(1); 
d1.catches(cat1); 

और फिर आपको जो चाहिए वह करने के लिए सहायक तरीके घोषित करें:

private ArrayList<Dog> initializeDogs() { 
ArrayList<Dog> dogs = new ArrayList<>(); 
dogs.add(new Dog(1)); 
dogs.add(new Dog(2)); 
dogs.add(new Dog(3)); 
dogs.add(new Dog(4)); 
dogs.add(new Dog(5)); 
return dogs; 
} 

private void initializeCat(List<Dog> dogs) { 
Cat cat1 = new Cat(1); 
cat.meow(); 
cat.startsRunningFrom(dogs); 
} 

बिंदु यह है कि यदि आप सर्वोत्तम प्रथाओं का उपयोग करके अपने तरीकों को समाहित करते हैं तो आपका इंडेंटिंग सम्मेलन शायद आवश्यक नहीं है।

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