एक बड़ी PHP परियोजना के पुनर्लेखन की योजना बनाने के लिए टिप्स?


13

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

मैं वास्तव में पूरी तरह से इस पुनर्लेखन की योजना बनाना चाहता हूं, मैं अपनी इच्छा के अनुसार हर सुविधा का विस्तार करना चाहता हूं, जहां यह जाएगा, और यह हर दूसरे हिस्से से कैसे जुड़ेगी - लेकिन मुझे इस स्तर की योजना के साथ कोई अनुभव नहीं है। कोई सुझाव? कोई प्रोग्राम जो मदद करेगा? मैं Trac से थक गया हूँ, मुझे यह वास्तव में पसंद नहीं है।

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


आप इसे फिर से लिखना क्यों चाहते हैं? इसे उन जगहों पर क्यों नहीं सुधारना चाहिए जिनमें सुधार की आवश्यकता है? जब आप स्क्रैच से किसी चीज को दोबारा लिखते हैं, तो संभावना है कि आप नई समस्याओं को खत्म कर देंगे।

@ गोर्डन शायद यह बहुत ही भयानक रूप से लिखा गया है कि इसे फिर से लिखना बेहतर है।
14

रिवाइटिंग हमेशा की तुलना में कठिन है, और मैंने इसे कठिन तरीके से सीखा है। ओह, अच्छी तरह से इस बार मुझे पता है कि मैं क्या कर रहा हूं, इसलिए इसे आधा समय लगेगा (तब यह मूल से अधिक समय लेगा क्योंकि आप ओवर-इंजीनियर पहले किए गए गलतियों को सुधारने या ठीक करने की कोशिश कर रहे हैं)
Davy8

जवाबों:


7

एक बड़ी परियोजना को विकसित करते समय कुछ चीजें नीचे देखें:

1 - मैं OpenProj जैसे एक नियोजन उपकरण का उपयोग करता हूं और उन सभी विशेषताओं को जोड़ता हूं जिन्हें मैं एक कार्य के रूप में शामिल करना चाहता हूं। उदाहरण के लिए, अभी मैं एक सुविधा पर काम कर रहा हूं ताकि मेरे उपयोगकर्ताओं को मेरी साइट में पंजीकरण करने के बाद स्वचालित रूप से लॉग ऑन करने की अनुमति मिल सके। मेरी योजना में एक कार्य है जैसे "फीचर-ऑटोलॉगिन"।

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

3 - मैं बड़े पैमाने पर गिट का उपयोग करता हूं। प्रत्येक सुविधा एक शाखा है। एक बार जब मैं प्रत्येक सुविधा को पूरा कर लेता हूं, तो मैं इसे वापस विकास शाखा में विलय कर देता हूं और अगली सुविधा के लिए एक नई शाखा बनाता हूं।

4 - अगर मुझे सॉफ्टवेयर में बग दिखाई देता है तो मैं इसे ठीक करने के लिए एक छोटी सी गिट शाखा बनाता हूं और इसे हल करने के बाद इसे वापस मर्ज करता हूं। मुझे यकीन है कि मैं विकास शाखा और अपनी वर्तमान सुविधा शाखा दोनों को अपडेट कर रहा हूं। वैसे मेरी OpenProj योजना में बग एक और कार्य बन जाता है। "बग-गलत-पता" जैसा कुछ। और जब मैं इसे सम्मिलित करता हूं, तो अन्य सभी सुविधाएं समय रेखा में वापस चली जाती हैं।

5 - जबकि मैं विकसित कर रहा हूं, अगर मैं एक नई सुविधा के बारे में सोचता हूं, तो मैं इसे योजना में शामिल करता हूं जहां मुझे लगता है कि यह सबसे अच्छा फिट होगा और समयरेखा को फिर से समायोजित करेगा।

आशा है कि ये आपकी मदद करेगा। ऐसा लगता है जैसे आपके पास एक रोमांचक परियोजना है। सौभाग्य!


10

यदि आप एक पूर्ण पुनर्लेखन के लिए जा रहे हैं, तो यह भी विचार क्यों न करें कि आपको php का उपयोग करना चाहिए? प्रौद्योगिकी का एक बदलाव / उन्नयन वह उत्प्रेरक हो सकता है जिसे आप अपने डिजाइन / स्केलेबिलिटी / स्थिरता आदि में सुधार करना चाहते हैं ...


3
इसके अलावा, मौजूदा रूपरेखाओं पर विचार करें फिर भी एक और एकल-उपयोग फ्रेमवर्क बनाने से बेहतर अनुकूल हो सकता है।
S.Lott

1
@ एस.लॉट - एकल-उपयोग फ्रेमवर्क बनाने में क्या गलत है अगर यह उस एकल उपयोग को किसी अन्य की तुलना में बेहतर बनाने के लिए अनुरूप है?
अनाम

1
@ क्रिस ब्रिजेट: दुनिया को अभी तक एक और अति-विशिष्ट ढांचे की आवश्यकता नहीं है। यह एक "आकर्षक उपद्रव" हो सकता है। समय की एक मजेदार बर्बादी। अक्सर, मौजूदा ढांचे काम भी करते हैं। विशेष प्रयोजन के ढांचे में "सिलाई" अक्सर एक स्थापित, मौजूदा ढांचे को समझने में विफलता से उपजा है। अक्सर, मौजूदा ढांचे अधिक सुरक्षित, अधिक विश्वसनीय और तेज होते हैं। अक्सर, मौजूदा ढांचे पहले से ही डिबग किए जाते हैं। अक्सर, मौजूदा ढांचे को टीम के अन्य सदस्यों द्वारा बेहतर समझा जाता है।
एस.लॉट

@ एस.लॉट: मैं इसे कई साइटों के लिए लिख रहा हूं जो मेरे पास हैं, और इसका डिज़ाइन इस तरह से सेटअप है कि कोई अन्य ढांचा नहीं है। मैं भी थोड़ी देर के लिए इसे जारी करने की योजना नहीं है, अगर कभी। पुन: TheLQ: यह मेरे पहले विचारों में से एक था, हालांकि किसी अन्य वेब भाषा की पहुंच नहीं है जो PHP .NET के अलावा अन्य करता है। पाइथन को प्राथमिकता दी जाएगी, हालांकि इसे cPanel सर्वर पर सेटअप करना (जो कि बहुत सारे वेब होस्टिंग दुनिया के लिए बहुत ही अच्छा मेकअप है) एक दर्द है।
जॉन

1
@ S.Lott मैं पोस्टिंग के बाद से सिम्फनी, CakePHP और CodeIgniter पर पढ़ रहा हूं, और नंबर एक चीज जो मुझे इनका उपयोग करने से रोक रही है - वह यह है कि सभी आँख बंद करके MVC में लगते हैं, और पुन: प्रयोज्य को अनदेखा करते हैं। मेरा वर्तमान (और भविष्य, अगर मैं फिर से लिखता हूं) डिजाइन एक फ़ोल्डर (ए 'मॉड्यूल' फ़ोल्डर) में एमवीसी है, हालांकि इसमें उपयोगकर्ता चाहता है (नामांकित example.module.view.php), साथ ही साथ एक थीम भी। फ़ोल्डर, जहां डिजाइनर अपने स्वयं के थीम बना सकते हैं जो मौजूदा दृश्यों को ओवरराइड करते हैं। यह मेरे लिए महत्वपूर्ण है, और कोई भी बड़ी चौखट हैकिंग के बिना ऐसा करने के लिए नहीं लगता है - जो मुझे परेशान करता है।
जॉन

10

मैं इसके बजाय भारी रिफ्लेक्टर करने का सुझाव दूंगा

आपके द्वारा यहाँ अनुमानित समस्या:

मैं वास्तव में पूरी तरह से इस पुनर्लेखन की योजना बनाना चाहता हूं, मैं अपनी इच्छा के अनुसार हर सुविधा का विस्तार करना चाहता हूं, जहां यह जाएगा, और यह हर दूसरे हिस्से से कैसे जुड़ेगी - लेकिन मुझे इस स्तर की योजना के साथ कोई अनुभव नहीं है। कोई सुझाव? कोई प्रोग्राम जो मदद करेगा? मैं Trac से थक गया हूँ, मुझे यह वास्तव में पसंद नहीं है।

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

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

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


मैं इसे ध्यान में रखूंगा, धन्यवाद। इसके अलावा सिर्फ चीजों को साफ करने के लिए - मैं अभी एमवीसी का उपयोग कर रहा हूं।
जॉन

@ जॉन: हां, यह भी, मेरे उदाहरण ने एक विशिष्ट पृष्ठ ग्रहण किया, कोई रूपरेखा नहीं। लेकिन मुझे लगता है, म्यूटेटिस म्यूटेंडिस, मेरा जवाब उसके द्वारा अमान्य नहीं है। एक बिंदु जिसका मैंने उल्लेख नहीं किया: रिफैक्टिंग मजेदार है। कुल बकवास देखने के लिए यह बहुत ही फायदेमंद है। :)
keppla

3

किसी मौजूदा ढांचे का उपयोग करने पर विचार करें। CakePHP, Zend फ्रेमवर्क, CodeIgniter और Symfony PHP के लिए ज्ञात हैं। यदि वे सैकड़ों या हजारों उपयोगकर्ताओं की जरूरतों को पूरा करते हैं, तो मुझे यकीन है कि वे आपका पूरा कर सकते हैं।

यदि आप PHP के अलावा कुछ सीखने / उपयोग करने के लिए तैयार हैं - Django (पायथन) और रेल्स (रूबी) पारंपरिक वेब अनुप्रयोगों के लिए अग्रणी रूपरेखा हैं।

बेशक, जब तक आप फ्रेमवर्क बनाने का अनुभव नहीं चाहते हैं - जो कि, मैं जोड़ सकता हूं, बाजार में बहुत कम मूल्य का है (बजाय मौजूदा, समर्थित फ्रेमवर्क का अच्छी तरह से उपयोग करने के बारे में जानने के बजाय)।


1

मुझे शेड्यूल ट्रैकर के रूप में Redmine का उपयोग करने में जो मजा आता है । आईटी उन वस्तुओं में से प्रत्येक को बहुत अच्छी तरह से संभालता है, साथ ही टीआरसी की तुलना में बहुत अधिक उपयोगकर्ता के अनुकूल (मेरी राय में)।

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

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


1

एक सॉफ्टवेयर ट्रैकिंग मुद्दे के रूप में, JIRA बहुत अच्छा है, लेकिन यह बहुत महंगा है। एक और अच्छा उपकरण है कि मैं का उपयोग कर रहा हूँ Eventum है। यह निःशुल्क है।

लेकिन सबसे महत्वपूर्ण हिस्सा यह है कि आपको क्या चाहिए, इसका एक अच्छा विचार है। पहले आपको अपने आवेदन के लिए आवश्यकताओं को इकट्ठा करना होगा, जो आप चाहते हैं और जितना संभव हो उतना पूरा होने के बारे में एक समग्र भावना है।

इसके आधार पर आप सॉफ्टवेयर आवश्यकताओं को बनाएंगे, यह एक अधिक तकनीकी दृष्टिकोण है जिसमें आप उन मॉड्यूलों का वर्णन करेंगे जो आपके आवेदन, उनके कार्यों और उप-कार्यों, वस्तुओं, कक्षाओं, उनके इंटरफेस का हिस्सा होंगे, बस सब कुछ के बारे में।

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

आशा करता हूँ की ये काम करेगा


जीरा कम 10 उपयोगकर्ताओं के लिए बहुत सस्ती है। लागत $ 10 है और $ 10 दान में जाता है।
सिक्सटफुटर्सड्यूड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.