वहाँ "अच्छा डिजाइन" के पास कोई धर्मवैधानिक परिभाषा है - सबसे अच्छा आप देखेंगे कि आपके डिजाइन इष्टतम तरीके से अपने परियोजना पर विभिन्न बलों को संतुलित करता है के लिए आशा कर सकते हैं, अपनी परियोजना पर बलों रख-रखाव, प्रदर्शन, scalability हो सकता है, विस्तारशीलता - क्लासिक गैर-कार्यात्मक आवश्यकताओं - लेकिन खोज इंजन अनुकूलन, मानक अनुपालन और अभिगम्यता जैसी चीजें (विशेष रूप से वेब परियोजनाओं पर लागू होने वाली चीजें)।
यदि आपके सभी यूआरएल फॉर्म हैं "www.mysite.com/home.php?action=getDetails & productID = 123", तो आपकी खोज इंजन मित्रता बहुत कम है। अर्थपूर्ण यूआरएल होना बेहतर है - "www.mysite.com/products/DesktopPc/details.php"। आप अपने वर्तमान डिजाइन में चालाक। Htaccess चालबाजी के माध्यम से इसे प्राप्त कर सकते हैं।
एक रखरखाव बिंदु से, आपके डिजाइन में कुछ समस्याएं हैं। यदि मैंने इसे सही ढंग से समझा है, तो साइट पर एक नया पृष्ठ जोड़ने के लिए आपको कई अलग-अलग स्रोत फ़ाइलों में कोड को संशोधित करने की आवश्यकता है - router.php (आपका विशाल स्विच स्टेटमेंट), पृष्ठ स्वयं, और शायद header.php भी। यह इंगित करता है कि कोड कसकर coupled है। विशाल स्विच स्टेटमेंट को संशोधित करना मनोरंजक बग के संभावित स्रोत की तरह लगता है, और राउटर और हेडर का संयोजन, चर को जोड़ना, साथ ही वास्तविक पृष्ठ स्वयं थोड़ा नाजुक लगता है। यह ठीक है अगर आप परियोजना पर काम कर रहे एकमात्र व्यक्ति हैं, और आप लंबी अवधि के लिए आसपास जा रहे हैं; यदि ऐसा नहीं है, तो ऑफ-द-शेल्फ फ्रेमवर्क का उपयोग करना बेहतर है (एमवीसी वर्तमान पसंदीदा है; ज़ेंड, सिम्फनी और केक सभी PHP में यह अच्छी तरह से करते हैं) क्योंकि आप दस्तावेज़ों पर नए डेवलपर्स को इंगित कर सकते हैं और उम्मीद करते हैं कि उन्हें गति पर।
रखरखाव के सबसे बड़े दुश्मनों में से एक जटिलता है - जटिल कोड के साथ काम करना कठिन होता है, और अधिक बग को रोकता है। जटिलता के लिए formal metric है, और मुझे पूरा यकीन है कि आपके मीट्रिक पर आपके स्विच स्टेटमेंट स्कोर बहुत अधिक हैं - स्वयं में एक बड़ी समस्या नहीं है, लेकिन निश्चित रूप से कुछ नजर रखने के लिए कुछ भी है। एमवीसी ढांचे के बहुत सारे कोड को कोड के बजाए डेटा के रूप में परिभाषित करते हैं (यानी कॉन्फ़िगरेशन फ़ाइल में रूट होते हैं), और/या कॉन्फ़िगरेशन पर सम्मेलन का उपयोग करके (यानी यदि अनुरोध पृष्ठ "उत्पाद विवरण" के लिए है, तो फ़ाइल शामिल करें "/inc/productDetails.inc")।
एक्स्टेंसिबिलिटी एक और चिंता हो सकती है - कल्पना करें कि आपकी साइट सामग्री को जेएसओएन या एक्सएमएल के साथ ही एचटीएमएल के रूप में उजागर करना है; आपके वर्तमान डिज़ाइन में, इसमें बहुत सारे बदलाव की आवश्यकता होगी, क्योंकि आपके पृष्ठ प्रसंस्करण पाइपलाइन में प्रत्येक आइटम की परवाह है और उसे जानने की आवश्यकता है। Home.php को एचटीएमएल भेजने के लिए नहीं पता होना चाहिए, हेडर और पाद लेख को जानने की जरूरत है, राउटर को अतिरिक्त डेटा प्रकार को संभालने के तरीके को समझने की जरूरत है, लगभग निश्चित रूप से स्विच स्टेटमेंट को और भी बड़ा बनाना। यह फिर से एक बड़ा सौदा नहीं हो सकता है।
आपके कोड का परीक्षण करने में सक्षम होने के कारण विस्तार और रखरखाव दोनों की मदद की जाती है। टेस्ट संचालित विकास इसे अपने पूरे अधिकार में एक पूर्ण दिनचर्या में बदल देता है; मुझे लगता है कि आपके आवेदन का परीक्षण करना मुश्किल है - लेकिन यह सिर्फ एक अनुमान है; यह इस बात पर निर्भर करता है कि आपने ऊपर वर्णित किए गए कोड की तुलना में कोड के अलग-अलग गांठों को कैसे बनाया है। हालांकि, एमवीसी का एक और लाभ यह है कि यह आपके सिस्टम के प्रमुख हिस्सों के लिए यूनिट परीक्षण लिखना आसान बनाता है।
इसलिए, यदि आपकी परियोजना पर बलों में रखरखाव या विस्तारशीलता पर जोर शामिल नहीं है, और आप एसईओ पहलू को संभाल सकते हैं, तो मुझे नहीं लगता कि आपका डिज़ाइन जरूरी है "बुरा"; भले ही आप उन चीजों की परवाह करते हैं, फिर भी उन चीजों को समायोजित करने के लिए आप अन्य चीजें कर सकते हैं - दस्तावेज लिखना, सस्ते कोडर किराए पर लेना।
इन डिज़ाइन विषयों के साथ गति प्राप्त करने का सबसे अच्छा तरीका PHP या MySQL पर पुस्तकें नहीं हैं; मैं मार्टिन फाउलर द्वारा "रिफैक्टरिंग" और "एंटरप्राइज़ एप्लिकेशन आर्किटेक्चर के पैटर्न" की सिफारिश करता हूं, गामा एट अल द्वारा "डिजाइन पैटर्न"। और मैककनेल द्वारा कोड पूर्ण (हालांकि अब तक यह एक स्पर्श है)। ईमानदार प्रश्न के लिए
+1। अगर home.php किसी भी अनुरोध के लिए शुरुआती बिंदु है, तो आपको एक एमवीसी आर्किटेक्चर (कम से कम एक प्रारंभिक बिंदु) मिल गया है। बधाई! (और परफेक्ट कोड डिज़ाइन = अनछुए सिद्धांत) – Teson
धन्यवाद! मैं एमवीसी वास्तुकला में देखता हूँ। – Chud37
आपका 'हेडर' बहुत काम कर रहा है .... यदि भविष्य में आप कुछ बदलाव चाहते हैं तो भविष्य में इसे बनाए रखना मुश्किल होगा। – itachi