படிநிலை சிதைவு
உங்கள் விண்ணப்பத்திற்கான வகுப்புகளை உடனடியாக எழுதத் தொடங்கக்கூடாது. முதலில் அதை வடிவமைக்க வேண்டும். வடிவமைப்பு சிந்தனைமிக்க கட்டிடக்கலையுடன் முடிவடைய வேண்டும். இந்த கட்டமைப்பைப் பெற, நீங்கள் தொடர்ந்து கணினியை சிதைக்க வேண்டும்.
சிதைவு படிநிலையாக மேற்கொள்ளப்பட வேண்டும் - முதலில், கணினி பெரிய செயல்பாட்டு தொகுதிகள் / துணை அமைப்புகளாக பிரிக்கப்பட்டுள்ளது, அவை அதன் செயல்பாட்டை மிகவும் பொதுவான வடிவத்தில் விவரிக்கின்றன. இதன் விளைவாக வரும் தொகுதிகள் இன்னும் விரிவாக பகுப்பாய்வு செய்யப்பட்டு துணை தொகுதிகள் அல்லது பொருள்களாக பிரிக்கப்படுகின்றன.
பொருள்களைத் தேர்ந்தெடுப்பதற்கு முன், கணினியை அடிப்படை சொற்பொருள் தொகுதிகளாகப் பிரிக்கவும், குறைந்தபட்சம் மனரீதியாக. சிறிய பயன்பாடுகளில், இதைச் செய்வது பொதுவாக மிகவும் எளிதானது: இரண்டு படிநிலை நிலைகள் போதுமானவை, ஏனெனில் கணினி முதலில் துணை அமைப்புகள் / தொகுப்புகளாக பிரிக்கப்பட்டுள்ளது, மேலும் தொகுப்புகள் வகுப்புகளாக பிரிக்கப்படுகின்றன.
![படிநிலை சிதைவு](https://cdn.codegym.cc/images/article/d5e9aa2b-5783-430f-b5b5-1832bc33c540/800.jpeg)
இந்த யோசனை தோன்றுவது போல் சாதாரணமானது அல்ல. எடுத்துக்காட்டாக, மாடல்-வியூ-கண்ட்ரோலர் (எம்விசி) போன்ற பொதுவான “கட்டடக்கலை வடிவத்தின்” சாராம்சம் என்ன?
இது வணிக தர்க்கத்திலிருந்து விளக்கக்காட்சியைப் பிரிப்பது பற்றியது . முதலில், எந்தவொரு பயனர் பயன்பாடும் இரண்டு தொகுதிகளாகப் பிரிக்கப்பட்டுள்ளது - ஒன்று வணிக தர்க்கத்தை (மாடல்) செயல்படுத்துவதற்குப் பொறுப்பாகும், இரண்டாவது பயனருடன் தொடர்புகொள்வதற்குப் பொறுப்பாகும் (பயனர் இடைமுகம் அல்லது பார்வை).
தொகுதிகள் எப்படியாவது தொடர்பு கொள்ள வேண்டும் என்று மாறிவிடும், இதற்காக அவை ஒரு கட்டுப்படுத்தியைச் சேர்க்கின்றன, அதன் பணி தொகுதிகளின் தொடர்புகளை நிர்வகிப்பதாகும். MVC இன் மொபைல் (கிளாசிக்) பதிப்பில், அப்சர்வர் பேட்டர்ன் அதில் சேர்க்கப்பட்டுள்ளது, இதனால் காட்சி மாதிரியிலிருந்து நிகழ்வுகளைப் பெறலாம் மற்றும் காண்பிக்கப்படும் தரவை உண்மையான நேரத்தில் மாற்றலாம்.
கணினியின் முதல் பிரிவின் விளைவாக மிகப்பெரிய கூறுகளாகப் பெறப்பட்ட வழக்கமான உயர்மட்ட தொகுதிகள், துல்லியமாக:
- வணிக தர்க்கம்;
- பயனர் இடைமுகம்;
- தரவுத்தளம்;
- செய்தியிடல் அமைப்பு;
- பொருள் கொள்கலன்.
முதல் பிளவு பொதுவாக முழு பயன்பாட்டையும் 2-7 (அதிகபட்சம் 10 பாகங்கள்) பிரிக்கிறது. நாம் அதை பல பகுதிகளாகப் பிரித்தால், அவற்றைத் தொகுக்க விருப்பம் இருக்கும், மேலும் 2-7 உயர்மட்ட தொகுதிகள் மீண்டும் கிடைக்கும்.
செயல்பாட்டு சிதைவு
தொகுதிகள் / துணை அமைப்புகளாகப் பிரிப்பது கணினி தீர்க்கும் பணிகளின் அடிப்படையில் சிறப்பாக செய்யப்படுகிறது . முக்கிய பணியானது அதன் உட்கூறு துணைப் பணிகளாகப் பிரிக்கப்பட்டுள்ளது, அவை ஒன்றையொன்று சாராமல், தன்னிச்சையாக தீர்க்க/செயல்படலாம்.
ஒவ்வொரு தொகுதியும் சில துணைப் பணியைத் தீர்ப்பதற்கும் அதனுடன் தொடர்புடைய செயல்பாட்டைச் செய்வதற்கும் பொறுப்பாக இருக்க வேண்டும் . செயல்பாட்டு நோக்கத்துடன் கூடுதலாக, தொகுதி அதன் செயல்பாட்டைச் செய்வதற்குத் தேவையான தரவுகளின் தொகுப்பால் வகைப்படுத்தப்படுகிறது, அதாவது:
தொகுதி = செயல்பாடு + அதை இயக்க தரவு தேவை.
தொகுதிகளாக சிதைவு சரியாக செய்யப்பட்டால், பிற தொகுதிகளுடன் (பிற செயல்பாடுகளுக்கு பொறுப்பு) தொடர்பு குறைவாக இருக்கும். அது இருக்கலாம், ஆனால் அது இல்லாதது உங்கள் தொகுதிக்கு முக்கியமானதாக இருக்கக்கூடாது.
ஒரு தொகுதி என்பது தன்னிச்சையான குறியீடு அல்ல, ஆனால் ஒரு குறிப்பிட்ட பணிக்கு ஒரு தீர்வை வழங்கும் ஒரு தனி செயல்பாட்டு அர்த்தமுள்ள மற்றும் முழுமையான நிரல் அலகு (துணை நிரல்) மேலும், சுதந்திரமாக அல்லது வேறு சூழலில் வேலை செய்து மீண்டும் பயன்படுத்த முடியும். தொகுதி ஒரு வகையான "நடத்தை மற்றும் வளர்ச்சியில் உறவினர் சுதந்திரம் திறன் கொண்ட ஒருமைப்பாடு." (கிறிஸ்டோபர் அலெக்சாண்டர்)
எனவே, திறமையான சிதைவு, முதலில், கணினி செயல்பாடுகளின் பகுப்பாய்வு மற்றும் இந்த செயல்பாடுகளைச் செய்யத் தேவையான தரவு ஆகியவற்றை அடிப்படையாகக் கொண்டது. இந்த வழக்கில் செயல்பாடுகள் வர்க்க செயல்பாடுகள் மற்றும் தொகுதிகள் அல்ல, ஏனெனில் அவை பொருள்கள் அல்ல. ஒரு தொகுதியில் உங்களிடம் இரண்டு வகுப்புகள் மட்டுமே இருந்தால், நீங்கள் அதை மிகைப்படுத்திவிட்டீர்கள்.
வலுவான மற்றும் பலவீனமான இணைப்பு
மட்டுப்படுத்துதலுடன் அதை மிகைப்படுத்தாமல் இருப்பது மிகவும் முக்கியம். நீங்கள் ஒரு தொடக்கக்காரருக்கு ஒரு ஒற்றை ஸ்பிரிங் பயன்பாட்டைக் கொடுத்து, அதை தொகுதிகளாக உடைக்கச் சொன்னால், அவர் ஒவ்வொரு ஸ்பிரிங் பீனையும் தனித்தனி தொகுதியாக எடுத்து, அவருடைய வேலை முடிந்ததாகக் கருதுவார். ஆனால் அது இல்லை.
சிதைவின் தரத்திற்கான முக்கிய அளவுகோல் தொகுதிகள் எவ்வாறு தங்கள் பணிகளைத் தீர்ப்பதில் கவனம் செலுத்துகின்றன மற்றும் சுயாதீனமாக உள்ளன.
இது பொதுவாக பின்வருமாறு உருவாக்கப்படுகிறது: "சிதைவு விளைவாக பெறப்பட்ட தொகுதிகள் அதிகபட்சமாக உள்நாட்டில் இணைக்கப்பட வேண்டும் (உயர் உள் ஒருங்கிணைப்பு) மற்றும் குறைந்தபட்சம் ஒன்றோடொன்று இணைக்கப்பட வேண்டும் (குறைந்த வெளிப்புற இணைப்பு)."
உயர் ஒருங்கிணைப்பு, உயர் ஒருங்கிணைப்பு அல்லது தொகுதிக்குள் "ஒற்றுமை", தொகுதி ஒரு குறுகிய சிக்கலைத் தீர்ப்பதில் கவனம் செலுத்துகிறது, மேலும் பன்முக செயல்பாடுகள் அல்லது தொடர்பில்லாத பொறுப்புகளைச் செய்வதில் ஈடுபடவில்லை என்பதைக் குறிக்கிறது.
ஒருங்கிணைப்பு என்பது தொகுதியால் செய்யப்படும் பணிகள் எந்த அளவிற்கு ஒன்றோடொன்று தொடர்புடையவை என்பதை வகைப்படுத்துகிறது.
உயர் ஒருங்கிணைப்பின் விளைவு ஒற்றைப் பொறுப்புக் கொள்கையாகும் - ஐந்து SOLID கொள்கைகளில் முதன்மையானது , இதன்படி எந்தவொரு பொருளுக்கும் / தொகுதிக்கும் ஒரே ஒரு பொறுப்பு மட்டுமே இருக்க வேண்டும் மற்றும் அதை மாற்றுவதற்கு ஒன்றுக்கு மேற்பட்ட காரணங்கள் இருக்கக்கூடாது.
குறைந்த இணைப்பு , தளர்வான இணைப்பு என்பது, கணினி பிரிக்கப்பட்ட தொகுதிகள், முடிந்தால், சுயாதீனமாக அல்லது ஒருவருக்கொருவர் தளர்வாக இணைக்கப்பட வேண்டும் என்பதாகும். அவர்கள் தொடர்பு கொள்ள முடியும், ஆனால் அதே நேரத்தில் ஒருவருக்கொருவர் பற்றி முடிந்தவரை குறைவாகவே தெரிந்து கொள்ள வேண்டும்.
ஒவ்வொரு தொகுதியும் மற்ற தொகுதி எவ்வாறு இயங்குகிறது, எந்த மொழியில் எழுதப்பட்டுள்ளது, எப்படி வேலை செய்கிறது என்பதைத் தெரிந்து கொள்ள வேண்டிய அவசியமில்லை. பெரும்பாலும், அத்தகைய தொகுதிகளின் தொடர்புகளை ஒழுங்கமைக்க, ஒரு குறிப்பிட்ட கொள்கலன் பயன்படுத்தப்படுகிறது, அதில் இந்த தொகுதிகள் ஏற்றப்படுகின்றன.
சரியான வடிவமைப்புடன், நீங்கள் ஒரு தொகுதியை மாற்றினால், மற்றவற்றை நீங்கள் திருத்த வேண்டியதில்லை அல்லது இந்த மாற்றங்கள் குறைவாக இருக்கும். இணைப்பின் தளர்வானது, நிரலை எழுதுவது/புரிந்துகொள்வது/நீட்டிப்பது/சரிசெய்வது எளிதாகும்.
நன்கு வடிவமைக்கப்பட்ட தொகுதிகள் பின்வரும் பண்புகளைக் கொண்டிருக்க வேண்டும் என்று நம்பப்படுகிறது:
- செயல்பாட்டு ஒருமைப்பாடு மற்றும் முழுமை - ஒவ்வொரு தொகுதியும் ஒரு செயல்பாட்டைச் செயல்படுத்துகிறது, ஆனால் அதை நன்றாகவும் முழுமையாகவும் செயல்படுத்துகிறது, தொகுதி அதன் செயல்பாட்டைச் செயல்படுத்த முழு அளவிலான செயல்பாடுகளை சுயாதீனமாக செய்கிறது.
- ஒரு உள்ளீடு மற்றும் ஒரு வெளியீடு - உள்ளீட்டில், நிரல் தொகுதி ஒரு குறிப்பிட்ட ஆரம்ப தரவைப் பெறுகிறது, அர்த்தமுள்ள செயலாக்கத்தைச் செய்கிறது மற்றும் ஒரு முடிவுத் தரவை வழங்குகிறது, அதாவது நிலையான ஐபிஓ கொள்கை செயல்படுத்தப்படுகிறது - உள்ளீடு -\u003e செயல்முறை -\u003e வெளியீடு.
- தர்க்கரீதியான சுதந்திரம் - நிரல் தொகுதியின் வேலையின் முடிவு ஆரம்ப தரவை மட்டுமே சார்ந்துள்ளது, ஆனால் மற்ற தொகுதிகளின் வேலையை சார்ந்து இல்லை.
- மற்ற தொகுதிகளுடன் பலவீனமான தகவல் இணைப்புகள் - தொகுதிகள் இடையே தகவல் பரிமாற்றம் முடிந்தால் குறைக்கப்பட வேண்டும்.
தொகுதிகளின் இணைப்பை இன்னும் எவ்வாறு குறைப்பது என்பதை ஒரு தொடக்கநிலையாளர் புரிந்துகொள்வது மிகவும் கடினம். ஓரளவு இந்த அறிவு அனுபவத்துடன் வருகிறது, ஓரளவு - ஸ்மார்ட் புத்தகங்களைப் படித்த பிறகு. ஆனால் தற்போதுள்ள பயன்பாடுகளின் கட்டமைப்புகளை பகுப்பாய்வு செய்வது சிறந்தது.
பரம்பரைக்கு பதிலாக கலவை
திறமையான சிதைவு என்பது ஒரு வகையான கலை மற்றும் பெரும்பாலான புரோகிராமர்களுக்கு கடினமான பணியாகும். இங்கே எளிமை ஏமாற்றும், தவறுகள் விலை உயர்ந்தவை.
![](https://cdn.codegym.cc/images/article/d7e785ed-e16d-4354-883c-0ad83327512a/512.jpeg)
அர்ப்பணிக்கப்பட்ட தொகுதிகள் ஒருவருக்கொருவர் வலுவாக இணைக்கப்பட்டுள்ளன, மேலும் அவை சுயாதீனமாக உருவாக்கப்பட முடியாது. அல்லது அவை ஒவ்வொன்றும் என்ன செயல்பாட்டிற்கு பொறுப்பானவை என்பது தெளிவாக இல்லை. நீங்கள் இதே போன்ற சிக்கலை எதிர்கொண்டால், பெரும்பாலும் தொகுதிகளாக பகிர்வது தவறாக செய்யப்பட்டது.
ஒவ்வொரு தொகுதியும் என்ன பங்கு வகிக்கிறது என்பது எப்போதும் தெளிவாக இருக்க வேண்டும் . தொகுதிகள் சுயாதீனமான மற்றும் மதிப்புமிக்க சப்ரூட்டின்களாக இருந்தால், சிதைவு சரியாக செய்யப்பட வேண்டும் என்பதற்கான மிகவும் நம்பகமான அளவுகோல், மீதமுள்ள பயன்பாட்டிலிருந்து தனிமைப்படுத்தப்படலாம் (எனவே மீண்டும் பயன்படுத்தலாம்).
ஒரு அமைப்பை சிதைக்கும்போது, அதன் தரத்தை நீங்களே கேட்டுக்கொள்வது விரும்பத்தக்கது: "ஒவ்வொரு தொகுதியும் என்ன பணியைச் செய்கிறது?", "தொகுதிகள் சோதனை செய்வது எவ்வளவு எளிது?", "தொகுதிகளை அவற்றின் சொந்தமாகப் பயன்படுத்த முடியுமா?" அல்லது வேறு சூழலில்?" மற்றவர்களை பாதிக்குமா?"
தொகுதிகளை முடிந்தவரை தன்னாட்சியாக வைத்திருக்க முயற்சிக்க வேண்டும் . முன்பு குறிப்பிட்டபடி, இது சரியான சிதைவுக்கான முக்கிய அளவுருவாகும் . எனவே, தொகுதிகள் ஆரம்பத்தில் பலவீனமாக ஒருவருக்கொருவர் சார்ந்து இருக்கும் வகையில் இது மேற்கொள்ளப்பட வேண்டும். நீங்கள் வெற்றி பெற்றால், நீங்கள் பெரியவர்.
இல்லையென்றால், இங்கேயும் எல்லாம் இழக்கப்படவில்லை. துணை அமைப்புகளுக்கு இடையிலான இணைப்புகளை மேலும் குறைக்கவும் பலவீனப்படுத்தவும் உங்களை அனுமதிக்கும் பல சிறப்பு நுட்பங்கள் மற்றும் வடிவங்கள் உள்ளன. எடுத்துக்காட்டாக, MVC விஷயத்தில், இந்த நோக்கத்திற்காக அப்சர்வர் முறை பயன்படுத்தப்பட்டது, ஆனால் பிற தீர்வுகள் சாத்தியமாகும்.
துண்டிப்பதற்கான நுட்பங்கள் முக்கிய "கட்டிடக் கலைஞரின் கருவித்தொகுப்பு" என்று கூறலாம். நாம் அனைத்து துணை அமைப்புகளைப் பற்றியும் பேசுகிறோம் என்பதைப் புரிந்துகொள்வது அவசியம் மற்றும் படிநிலையின் அனைத்து மட்டங்களிலும் இணைப்பை பலவீனப்படுத்துவது அவசியம் , அதாவது, வகுப்புகளுக்கு இடையில் மட்டுமல்ல, ஒவ்வொரு படிநிலை மட்டத்திலும் உள்ள தொகுதிகளுக்கு இடையில்.