हाल ही में मैंने खुद को आर कोड के साथ काम किया है जो कोडिंग शैली के मामले में नक्शे पर है - एकाधिक लेखकों और व्यक्तिगत लेखकों जो एक ही संरचना में चिपके रहने के बारे में कठोर नहीं हैं। कुछ ऐसे कार्य हैं जिन्हें मैं वर्तमान में बेहतर से स्वचालित करना चाहता हूं।आर भाषा जागरूक कोड सुधार/रीफैक्टरिंग उपकरण?
मैं एक उपकरण (या उपकरण) की तलाश में हूं जो निम्नलिखित कार्यों का प्रबंधन करता है - इच्छा के बढ़ते क्रम में सूचीबद्ध है लेकिन कुछ हद तक अस्तित्व के संदेह के क्रम में भी बढ़ रहा है।
मूल स्वरूपण। "अगर (foo)" से "if (foo)" को परिवर्तित करने और ब्रेस स्थान और उस तरह की चीज़ के संदर्भ में समानता प्राप्त करने जैसी चीजें।
सूची एक्सेस के लिए "foo $ blah" को "foo [[" blah "]] में परिवर्तित करना। आदर्श रूप से यह कम से कम अनुमान लगाने में सक्षम होगा यदि कोई ऑब्जेक्ट वास्तव में एक सूची थी, न कि डेटा.फ्रेम और केवल सूचियों को परिवर्तित करें।
'=' से '< -' कनवर्ट करना। हां, यह एक साधारण खोज है और प्रतिस्थापित है - लेकिन वास्तव में नहीं। उपकरण (या regexp) को भाषा जागरूक होने की आवश्यकता है जैसे कि यह "x = 5" को परिवर्तित करना जानता है लेकिन "foo (x = 5)" नहीं। यह वास्तव में प्रतीक को प्रतिस्थापित करने के लिए वास्तव में अच्छा नहीं होगा बल्कि असाइनमेंट ऑपरेटर के दोनों किनारों पर एक सिंगल व्हाइटस्पेस सुनिश्चित करने के लिए भी अच्छा होगा।
परिवर्तनीय नामकरण, खासकर कार्यों में & फ़ाइलें। उदाहरण के लिए, मान लें कि किसी सूची में एक तत्व "foo" है, मैं इसे "foobar" में बदलने में सक्षम होना चाहता हूं और पूरे कोड प्रवाह में उस सूची के हर उपयोग को ट्रैक नहीं करना चाहता। मुझे लगता है कि इस उपकरण को अलग-अलग फ़ंक्शन में किसी अन्य नाम के रूप में मौजूद सूची जैसी चीज़ों की पहचान करने के लिए उपकरण के नियंत्रण के पूरे प्रवाह को सक्षम करने की आवश्यकता होगी।
नामकरण सम्मेलन। मुझे कुछ मानक नामकरण सम्मेलन को परिभाषित करने में सक्षम होना पसंद है (उदा। Google's या जो भी हो) और यह सभी कार्यों, चर, आदि की पहचान करें और उन्हें परिवर्तित करें। ध्यान दें कि यह सूची तत्वों जैसी चीजों के लिए पिछली प्रविष्टि के साथ जुड़ता है।
बुनियादी यूनिक्स संसाधन आदेशों को सूचीबद्ध करने के लिए स्वतंत्र महसूस (जैसे एसईडी) जब तक यह वास्तव में बहुत चालाक कम से कम आम तौर पर चीजों को पेंच नहीं करने के लिए हो जाएगा (जैसे परिवर्तित "foo (एक्स = 5)" को " foo (x < -5) ")।
मुझे लगता है कि यदि ऐसा उपकरण पहले से ही एक पूर्ण स्थिति में मौजूद है, जिसे मैंने अभी तक सुना होगा, और मैं यह भी महसूस कर रहा हूं कि आर जैसी भाषा के साथ इस तरह के कुछ करना मुश्किल है स्वचालित रूप से परिवर्तनों का, लेकिन कोई सपना देख सकता है, है ना? क्या किसी के पास इनमें से कुछ/सभी पर पॉइंटर्स हैं?
Reformatting यहाँ पर चर्चा की गई: http://stackoverflow.com/questions/5117359/any-r-style-guide-checker –
IIRC 'formatR' एक पैकेज है कि को साफ है आर कोड और आपकी सूची में कुछ बिंदुओं को शामिल करता है। – baptiste
दूसरा लक्ष्य एक टैड गन्दा हो सकता है: data.frame 'is.list()' के लिए सत्य लौटाता है। आप 'is.list (myObject) और (! Is.data.frame (myObject)) जैसी कुछ कोशिश कर सकते हैं। – Iterator