10 የነገር ተኮር የፕሮግራም መርሆዎች እያንዳንዱ ገንቢ ማወቅ ያለበት

10 የነገር ተኮር የፕሮግራም መርሆዎች እያንዳንዱ ገንቢ ማወቅ ያለበት

ብዙ ጊዜ ስለ SOLID መርሆዎች ያልሰሙ ገንቢዎችን አገኛለሁ (እኛ እዚህ ስለ እነርሱ በዝርዝር ተናግሯል.. - ትርጉም) ወይም ነገር-ተኮር ፕሮግራሚንግ (OOP)፣ ወይም ሰምቷል፣ ግን በተግባር አይጠቀሙባቸው። ይህ ጽሑፍ ገንቢውን በዕለት ተዕለት ሥራው ውስጥ የሚያግዙትን የ OOP መርሆዎች ጥቅሞች ይገልጻል. አንዳንዶቹ በደንብ ይታወቃሉ, ሌሎች ብዙ አይደሉም, ስለዚህ ጽሑፉ ለጀማሪዎች እና ቀደም ሲል ልምድ ላላቸው ፕሮግራመሮች ጠቃሚ ይሆናል.

እኛ እናስታውስዎታለን- ለሁሉም የ "ሀብር" አንባቢዎች - የ "Habr" የማስተዋወቂያ ኮድን በመጠቀም በማንኛውም የ Skillbox ኮርስ ውስጥ ሲመዘገቡ የ 10 ሩብልስ ቅናሽ.

Skillbox ይመክራል፡ ትምህርታዊ የመስመር ላይ ኮርስ "የጃቫ ገንቢ".

ደረቅ (ራስህን አትድገም)

በትክክል ቀላል መርህ ፣ ዋናው ነገር ከስሙ ግልፅ ነው-“ራስህን አትድገም”። ለፕሮግራመር, ይህ ማለት የተባዛ ኮድን ማስወገድ አስፈላጊ ነው, እንዲሁም በስራ ላይ ማጠቃለልን መጠቀም መቻል ማለት ነው.

በኮዱ ውስጥ ሁለት ተደጋጋሚ ክፍሎች ካሉ ወደ አንድ ዘዴ መቀላቀል አለባቸው. ሃርድ ኮድ የተደረገ እሴት ከአንድ ጊዜ በላይ ጥቅም ላይ ከዋለ ወደ ህዝባዊ ቋሚ መቀየር ጠቃሚ ነው.

ይህ የ OOP ዋና ተግባር የሆነውን ኮዱን ለማቃለል እና ለማቆየት ቀላል ለማድረግ አስፈላጊ ነው. ተመሳሳዩ ኮድ በሁለቱም OrderId እና SSN ቼኩን ስለማያልፍ ማህበሩን አላግባብ መጠቀም የለብዎትም።

ኢንሴፕሽን ቀይር

የአብዛኞቹ ኩባንያዎች የሶፍትዌር ምርቶች በየጊዜው በማደግ ላይ ናቸው. ይህ ማለት ኮዱ መቀየር አለበት, መጠበቅ አለበት. በማሸግ ህይወትዎን ቀላል ማድረግ ይችላሉ. ይህ አሁን ያለውን የኮድ መሰረትዎን በብቃት እንዲፈትሹ እና እንዲጠብቁ ያስችልዎታል። አንድ ምሳሌ እዚህ አለ።.

በጃቫ ነው የምትጽፈው ከሆነ በነባሪነት ለስልቶች እና ተለዋዋጮች ግላዊ መድብ.

ግልጽነት / መቀራረብ መርህ

ይህ መርህ የሚከተለውን መግለጫ በማንበብ በቀላሉ ሊታወስ ይችላል: "የሶፍትዌር አካላት (ክፍሎች, ሞጁሎች, ተግባራት, ወዘተ) ለማራዘም ክፍት መሆን አለባቸው, ነገር ግን ለማሻሻል ዝግ መሆን አለባቸው." በተግባር ይህ ማለት የምንጭ ኮዱን ሳይቀይሩ ባህሪያቸው እንዲለወጥ መፍቀድ ማለት ነው.

በምንጭ ኮድ ላይ የሚደረጉ ለውጦች ክለሳዎች፣ የክፍል ፍተሻ እና ሌሎች ሂደቶች ሲፈልጉ መርሆው አስፈላጊ ነው። ክፍት/የተዘጋውን መርሆ የሚያከብር ኮድ ሲራዘም አይለወጥም ስለዚህ በእሱ ላይ ችግሮች ያነሱ ናቸው።

ይህንን መርህ የሚጥስ ኮድ ምሳሌ እዚህ አለ።

10 የነገር ተኮር የፕሮግራም መርሆዎች እያንዳንዱ ገንቢ ማወቅ ያለበት

በውስጡ የሆነ ነገር መለወጥ ካስፈለገዎት ብዙ ጊዜ ይወስዳል, ምክንያቱም ከተፈለገው ቁራጭ ጋር ግንኙነት ያላቸውን ሁሉንም የኮዱ ክፍሎች መለወጥ አለብዎት.

በነገራችን ላይ ግልጽነት-መዘጋት ከ SOLID መርሆዎች አንዱ ነው.

ነጠላ የኃላፊነት መርህ (SRP)

ከ SOLID ስብስብ ሌላ መርህ. "ወደ ክፍል ለውጥ የሚያመራው አንድ ምክንያት ብቻ ነው" ይላል። ክፍሉ አንድ ተግባር ብቻ ነው ያለው። ብዙ ዘዴዎች ሊኖሩት ይችላል, ግን እያንዳንዳቸው አንድ የተለመደ ችግር ለመፍታት ብቻ ጥቅም ላይ ይውላሉ. ሁሉም ዘዴዎች እና ንብረቶች ይህንን ብቻ ማገልገል አለባቸው.

10 የነገር ተኮር የፕሮግራም መርሆዎች እያንዳንዱ ገንቢ ማወቅ ያለበት

የዚህ መርህ ዋጋ በአንድ ነጠላ ሶፍትዌር እና በኮዱ መካከል ያለውን ግንኙነት መፍታት ነው። ከአንድ በላይ ተግባራትን ወደ ክፍል ማከል በሁለቱ ተግባራት መካከል ያለውን ግንኙነት ያስተዋውቃል። ስለዚህ, ከመካከላቸው አንዱን ከቀየሩ, ከመጀመሪያው ጋር የተያያዘውን ሁለተኛውን ለማበላሸት ትልቅ እድል አለ. እናም ይህ ማለት ሁሉንም ችግሮች አስቀድመው ለመለየት የሙከራ ዑደቶችን መጨመር ማለት ነው.

ጥገኝነት የተገላቢጦሽ መርህ (DIP)

10 የነገር ተኮር የፕሮግራም መርሆዎች እያንዳንዱ ገንቢ ማወቅ ያለበት

ከላይ ያለው የAppManager በ EventLogWriter ላይ የሚመረኮዝበት የኮድ ምሳሌ ነው፣ እሱም በተራው ደግሞ ከAppManager ጋር በቅርበት የተያያዘ ነው። ማሳወቂያውን ለማሳየት የተለየ መንገድ ከፈለጉ፣ ግፋ፣ ኤስኤምኤስ ወይም ኢሜይል ከሆነ፣ የAppManager ክፍልን መቀየር አለብዎት።

ችግሩ በ DIP ሊፈታ ይችላል. ስለዚህ፣ ከAppManager ይልቅ፣ የEventLogWriterን እንጠይቃለን፣ እሱም ማዕቀፉን ተጠቅሞ የሚወጋ።

DIP የጥገኝነት ሞጁሉን በመቀየር ነጠላ ሞጁሎችን ከሌሎች ጋር በቀላሉ ለመተካት ያስችላል። ይህ ሌላውን ሳይነካው አንድ ሞጁል ለመለወጥ ያስችላል.

ከውርስ ይልቅ ቅንብር

10 የነገር ተኮር የፕሮግራም መርሆዎች እያንዳንዱ ገንቢ ማወቅ ያለበትኮድን እንደገና ለመጠቀም ሁለቱ ዋና መንገዶች ውርስ እና ጥንቅር ናቸው ፣ እያንዳንዱም የራሱ ጥቅሞች እና ጉዳቶች አሉት። ሁለተኛው ደግሞ የበለጠ ተለዋዋጭ ስለሆነ ብዙውን ጊዜ ይመረጣል.

ቅንብር ንብረቶቹን በማዘጋጀት የክፍሉን ባህሪ በሂደት ጊዜ የመቀየር ችሎታ ይሰጥዎታል። መገናኛዎችን ሲተገበሩ, ፖሊሞርፊዝም ጥቅም ላይ ይውላል, ይህም የበለጠ ተለዋዋጭ አተገባበርን ይሰጣል.

“ውጤታማ ጃቫ” እንኳን ጆሹዋ ብሉች ይመክራል ከውርስ ይልቅ ጥንቅርን ይመርጣል።

ባርባራ ሊስኮቭ የመተካት መርህ (ኤል.ኤስ.ፒ.)

ከ SOLID መሣሪያ ስብስብ ሌላ መርህ። ንዑስ ዓይነቶች ለአንድ ሱፐርታይፕ መተካት አለባቸው ይላል። ማለትም ከሱፐር መደብ ጋር የሚሰሩ ዘዴዎች እና ተግባራት ከንዑስ ክፍሎቹ ጋር ያለ ችግር መስራት መቻል አለባቸው።

LSP ከሁለቱም ነጠላ የኃላፊነት መርህ እና የኃላፊነት መለያየት መርህ ጋር የተያያዘ ነው። አንድ ክፍል ከንዑስ መደብ የበለጠ ተግባርን የሚያቀርብ ከሆነ የኋለኛው አንዳንድ ተግባራትን አይደግፍም ፣ ይህንን መርህ ይጥሳል።

ከኤልኤስፒ ጋር የሚቃረን አንድ ቁራጭ ኮድ እዚህ አለ።

10 የነገር ተኮር የፕሮግራም መርሆዎች እያንዳንዱ ገንቢ ማወቅ ያለበት

አካባቢው (አራት ማዕዘን r) ዘዴ የአንድን አራት ማዕዘን ቦታ ያሰላል. ካሬ እዚህ አራት ማዕዘን ስላልሆነ ፕሮግራሙ ካሬውን ከፈጸመ በኋላ ይወድቃል። በኤልኤስፒ መርህ መሰረት የመሠረታዊ ክፍሎችን ማመሳከሪያዎችን የሚጠቀሙ ተግባራት ያለ ተጨማሪ መመሪያዎች የተገኙ ክፍሎችን መጠቀም መቻል አለባቸው.

ይህ የንዑስ ዓይነት ልዩ ፍቺ የሆነው መርሆ ባርባራ ሊስኮቭ በ1987 በተደረገው የኮንፈረንስ ቁልፍ ማስታወሻ ላይ “ዳታ አብስትራክሽን እና ተዋረድ” ተብሎ የቀረበ ነው - ስለዚህም ስሙ።

በይነገጽ መለያየት መርህ (አይኤስፒ)

ሌላ የ SOLID መርህ። እሱ እንደሚለው, ጥቅም ላይ ያልዋለ በይነገጽ መተግበር የለበትም. ይህንን መርህ መከተል በስራው አመክንዮ ላይ ለውጦችን ሲያደርግ ስርዓቱ ተለዋዋጭ እና ተለዋዋጭ ሆኖ እንዲቆይ ይረዳል.

ብዙውን ጊዜ, ይህ ሁኔታ የሚከሰተው በይነገጹ ብዙ ተግባራትን በአንድ ጊዜ ሲይዝ ነው, እና ደንበኛው ከመካከላቸው አንዱን ብቻ ያስፈልገዋል.

በይነገጽ መፃፍ ውስብስብ ስራ ስለሆነ ስራው ከተጠናቀቀ በኋላ ምንም ነገር ሳይሰበር መቀየር ችግር ይሆናል.

በጃቫ ውስጥ ያለው የአይኤስፒ መርህ ጥቅሙ ሁሉም ዘዴዎች መጀመሪያ መተግበር አለባቸው እና ከዚያ በኋላ ብቻ በክፍል ሊጠቀሙባቸው ይችላሉ። ስለዚህ, መርህ ዘዴዎችን ቁጥር ለመቀነስ ያስችላል.

10 የነገር ተኮር የፕሮግራም መርሆዎች እያንዳንዱ ገንቢ ማወቅ ያለበት

ለበይነገጽ ፕሮግራሚንግ እንጂ ትግበራ አይደለም።

እዚህ ሁሉም ነገር ከስሙ ግልጽ ነው. ይህንን መርህ መተግበር ከማንኛውም አዲስ የበይነገጽ አተገባበር ጋር ወደሚሰራ ተለዋዋጭ ኮድ ይመራል።

ለተለዋዋጮች፣ የመመለሻ ዓይነቶች ወይም ዘዴ ነጋሪ እሴት አይነት የበይነገጽ አይነት መጠቀም አለብህ። ለምሳሌ ከንዑስ ክፍል ይልቅ ሱፐር ክላስን መጠቀም ነው።

ያውና:

የዝርዝር ቁጥሮች= getNumbers();

ግን አይደለም፡-

ArrayList ቁጥሮች = getNumbers ();

ከላይ የተነገረውን ተግባራዊ ተግባራዊ ማድረግ እነሆ።

10 የነገር ተኮር የፕሮግራም መርሆዎች እያንዳንዱ ገንቢ ማወቅ ያለበት

የውክልና መርህ

የተለመደው ምሳሌ በጃቫ ውስጥ እኩል () እና hashCode () ዘዴዎች ናቸው። ሁለት ነገሮችን ማወዳደር ሲያስፈልግ, ይህ እርምጃ ከደንበኛው ክፍል ይልቅ ወደ ተገቢው ክፍል ተላልፏል.

የመርህ ጥቅሙ ምንም አይነት ኮድ ማባዛት አለመኖሩ እና ባህሪን ለመለወጥ በአንፃራዊነት ቀላል ነው. ለክስተቱ ውክልናም ይሠራል።

10 የነገር ተኮር የፕሮግራም መርሆዎች እያንዳንዱ ገንቢ ማወቅ ያለበት

እነዚህ ሁሉ መርሆዎች የበለጠ ተለዋዋጭ, ቆንጆ እና አስተማማኝ ኮድ በከፍተኛ ቅንጅት እና ዝቅተኛ ትስስር እንዲጽፉ ያስችሉዎታል. እርግጥ ነው, ቲዎሪ ጥሩ ነው, ነገር ግን ገንቢ በእውነቱ የተገኘውን እውቀት መጠቀም እንዲጀምር, ልምምድ ያስፈልጋል. የ OOP መርሆዎችን ካጠናቀቀ በኋላ የሚቀጥለው እርምጃ የተለመዱ የሶፍትዌር ልማት ችግሮችን ለመፍታት የንድፍ ንድፎችን ማጥናት ሊሆን ይችላል.

Skillbox ይመክራል፡

ምንጭ: hab.com

አስተያየት ያክሉ