2013-07-03 3 views
9

मैं MATLAB के लिए कोडिंग मानक अपनाना चाहता हूं, लेकिन मुझे यकीन नहीं है कि मैंने सही चुना है या नहीं।आधुनिक MATLAB कोडस्टाइल: क्या गुम है?

मेरे सर्वोत्तम ज्ञान के लिए MATLAB के लिए प्रोग्रामिंग दिशानिर्देशों के विषय पर इतना अधिक उपलब्ध नहीं है, document के अलावा। दस्तावेज़ अच्छी तरह से लिखा गया है और अच्छी प्रतिक्रिया है। मानक 2002 में (मैटलैब सेंट्रल पर) रिचर्ड जॉनसन द्वारा प्रकाशित किया गया था लेकिन तब से अपडेट नहीं किया जा रहा है। क्या संस्करण या इसी तरह के दस्तावेज़ के लिएहै? (मैं वास्तव में कुछ और करने के लिए Google विफल रहा)।

पृष्ठभूमि प्रेरणा मानता

  • कोडिंग मानकों महत्वपूर्ण
  • हैं हालांकि MATLAB 2002 के बाद से अधिक परिवर्तन नहीं किया गया है, अन्य भाषाओं और उनके दृष्टिकोण है। वास्तव में उन प्रथाओं से लाभ हो सकता है।
  • तथ्य यह है कि बहुत से लोग MATLAB या Octave का उपयोग करके नया कोड लिख रहे हैं। हालांकि, कोई तर्क देगा कि भाषा लगभग मर चुकी है (ब्ला ब्लाह)। मैं वहां नहीं जाऊंगा (चलो इसे एक ऑफटॉपिक के रूप में चिह्नित करें)।

मैं यहाँ कुछ चीजें संक्षेप में प्रस्तुत करना चाहते हैं क्यों codestyle मुझे

के लिए पर्याप्त नहीं है। आप दस्तावेज़ को पढ़ने के लिए समय लेने के लिए तो आपको पता चल सकता है कि यह

  • की कोशिश करता भी hungarian होने के लिए (यह गुप्त है और मैं वास्तव में ज्यादातर मामलों में यह नफरत)
  • यह भी कई शॉर्टकट (के लिए और अधिक कम समान है पिछला बिंदु)
  • यह मैथवर्क्स द्वारा समर्थित नहीं है (लेकिन यह वास्तव में एक अच्छी बात हो सकती है, क्योंकि MATLAB में सभी अच्छी सामग्री उपयोगकर्ता समुदाय आईएमओ से आई थी)
  • ऐसी कोडिंग शैली का सम्मान करने के लिए कोई स्वचालित गुणवत्ता नियंत्रण उपकरण नहीं है (यहां मेरा मतलब है कि लिंट परिवार में मिलिंट की तरह कुछ नहीं, लेकिन पाइथन के लिए pep8.py की तरह)

मुझे लगता है कि ऐसा उपकरण क्यों विकसित नहीं हुआ है वास्तव में व्यापक रूप से स्वीकार्य कोडिंग मानक की अनुपस्थिति है।

मैं मानक या सूचना पर बेहतर किसी भी आलोचना की सराहना करता हूं।

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

+2

यह है: http://stackoverflow.com/a/5042797/97160। यहां कुछ उपयोगी सामान भी हैं: http://stackoverflow.com/q/2326609/97160 – Amro

+0

@Amro: यह वास्तव में काफी बढ़िया है। यदि "MATLAB शैली के तत्व" अच्छे हैं, तो मेरा जवाब हो सकता है! –

+1

इसके लेखक (रिचर्ड जॉनसन) द्वारा। मुझे यह विकी भी मिली: https://sites.google.com/site/matlabstyleguidelines/ – Amro

उत्तर

3

सबसे अच्छा जवाब में से एक अब तक एमरो द्वारा एक टिप्पणी उद्धृत करने के लिए होगा: "एक ही लेखक (रिचर्ड जॉनसन)" एक book 'MATLAB शैली के तत्वों' का प्रकाशन किया है

(भी wiki देखना) 2011:

cover

सामग्री

की तालिका
  1. सामान्य सिद्धांत
  2. का प्रारूपण नामकरण
  3. प्रलेखन
  4. प्रोग्रामिंग
  5. फ़ाइलें और संगठन
  6. विकास।

लोरेन review of the book के साथ एक ब्लॉग प्रविष्टि है। मैं बस यहाँ का पालन करेंगे टिप्पणियों की लाइन:

  • 7 स्प्लिट लांग कोड सुशोभित अंक पर लाइन्स - मैं इस एक उपयोगी पाते हैं के रूप में यह अब तक किसी भी संपादक में सही करने के लिए बंद पीछा करने के लिए एक कुल दर्द है, यहां तक ​​कि यह हालांकि संभव है।
  • 10 हार्ड टैब का उपयोग न करें - यह संभवतः विभिन्न संपादन वातावरण वाले समूह के बीच काम करते समय स्वच्छता बनाए रखने में मदद करता है।

  • 43 बड़े पैमाने पर चर के लिए अर्थपूर्ण नामों का उपयोग करें - यह आवश्यक होने पर कोड को पढ़ने, समझने और डीबग करने में बहुत आसान बनाता है।

  • 69 उनके द्वारा किए गए कार्यों के लिए नाम कार्य - चूंकि कार्य एक क्रिया करते हैं, नाम में कार्रवाई के बारे में जानकारी शामिल होनी चाहिए।

  • 86 डेटा फ़ाइलों के नामों में क्रमबद्ध संख्या का उपयोग करें - यदि आपके पास डेटा की कई समान फ़ाइलें हैं, तो तर्कसंगत संख्यात्मक योजना होने से केवल आपकी मदद मिल सकती है।

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

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

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

  • 172 अभिभावक का उपयोग करें - अर्थ की स्पष्टता सर्वोपरि है, खासकर अगर दूसरों को कोड को समझने, संशोधित करने या अनुवाद करने की आवश्यकता है।

  • 176 जब संभव हो तो eval के उपयोग से बचें - मुझे यकीन है कि यह कुछ MATLAB उपयोगकर्ताओं को ऐसा नहीं लगता है, लेकिन eval अधिकांश समय से बचने योग्य है।

  • 185-188 इनमें से पहला जटिल सशर्त भाव से बचें है - इन प्रविष्टियों कुछ उपयोगी विचारों को शामिल सशर्त निर्माणों के साथ काम पर, मामलों के आदेश, आदि

  • 271-275 इनमें से पहला छोटे टेस्ट लिखें - मुझे प्यार है कि रिचर्ड ने इस स्टाइल गाइड के केंद्रीय सिद्धांत का परीक्षण किया है। मैं नहीं देखता कि कैसे प्रोग्रामर मजबूत परीक्षण सूट के बिना अच्छी तरह से काम करते हैं।

निष्कर्ष

किताब लगता है मैंने इसे पढ़ा और अधिक जानकारी प्राप्त करने के लिए जारी रहेगा 2002 से मूल दस्तावेज की तुलना में बहुत सामान्य है, लेकिन यह पूरी तरह से पूरा करने के लिए के लिए आवश्यक कठोरता की मेरी समझ प्रतीत नहीं होता एक कोडिंग मानक। यह शुरुआती प्रोग्रामर के लिए बहुत से सामान्य विचारों को उपयोगी बनाता है, लेकिन प्रोग्राम के लिए सख्त नहीं है ताकि वे स्वचालित रूप से कोड का परीक्षण कर सकें (फिर से PEP8)।

+0

+1। मुझे डर है कि MATLAB के लिए कोई PEP8 समान टूल नहीं है जिसे मैं कोड शैलियों को लागू करने के बारे में जानता हूं। आईडीई * कोड विश्लेषक * (पूर्व में mlint) सबसे नज़दीकी चीज है जिसे मैं सोच सकता हूं, लेकिन यह बिल्कुल वही बात नहीं है ... आप हमेशा एक नई परियोजना शुरू कर सकते हैं और इस तरह के एक उपकरण को लागू कर सकते हैं :) – Amro

+1

यहां कुछ रुचि है : http://undocumentedmatlab.com/blog/parsing-mlint-code-analyzer-output/ – Amro

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