10 Principii di prugrammazione orientata à l'ughjetti chì ogni sviluppatore deve sapè

10 Principii di prugrammazione orientata à l'ughjetti chì ogni sviluppatore deve sapè

Piuttostu spessu scuntrà sviluppatori chì ùn anu micca intesu parlà di i principii di SOLID (noi ne hà parlatu in dettagliu quì.. - Transl.) o prugrammazione orientata à l'ughjettu (OOP), o intesu, ma ùn li aduprà in pratica. Questu articulu descrive i benefici di i principii OOP chì aiutanu u sviluppatore in u so travagliu di ogni ghjornu. Unipochi di elli sò ben cunnisciuti, altri micca tantu, cusì l'articulu serà utile sia per i principianti sia per i programatori già sperimentati.

Ramintemu: per tutti i lettori di "Habr" - un scontu di 10 000 rubles quandu si iscrizzione in ogni cursu Skillbox cù u codice promozionale "Habr".

Skillbox consiglia: Corso educativu in linea "Sviluppatore Java".

DRY (Ùn ripetite micca)

Un principiu abbastanza simplice, l'essenza di quale hè chjaru da u nome: "Ùn ripetite micca". Per un programatore, questu significa a necessità di evità u codice duplicatu, è ancu a capacità di utilizà l'astrazione in u travagliu.

Se ci sò dui rùbbriche ripetute in u codice, anu da esse cumminati in un metudu. Se un valore codificatu hè utilizatu più di una volta, vale a pena di cunvertisce in una constante publica.

Questu hè necessariu per simplificà u codice è fà più faciule di mantene, chì hè u compitu principale di OOP. Ùn deve micca abusu di l'unione, postu chì u listessu codice ùn passà micca u cuntrollu cù OrderId è SSN.

Cambia l'Encapsulation

I prudutti di u software di a maiò parte di l'imprese sò in constante evoluzione. Questu significa chì u codice deve esse cambiatu, deve esse mantinutu. Pudete fà a vostra vita più faciule cù l'encapsulazione. Questu permetterà di pruvà più efficacemente è mantene a vostra basa di codice esistente. Eccu un esempiu.

Sè vo scrivite in Java allora assignà privati ​​​​à metudi è variàbili per difettu.

U principiu di apertura / vicinanza

Stu principiu pò esse facilmente ricurdatu da leghje a seguente dichjarazione: "E entità software (classi, moduli, funzioni, etc.) deve esse aperti per estensione, ma chjusu per mudificazione". In pratica, questu significa chì ponu permette u so cumpurtamentu per esse cambiatu senza cambià u codice fonte.

U principiu hè impurtante quandu i cambiamenti à u codice fonte necessitanu rivisioni, teste di unità è altre prucedure. U codice chì seguita u principiu apertu / chjusu ùn cambia micca quandu hè allargatu, cusì ci sò assai menu prublemi cun ellu.

Eccu un esempiu di codice chì viola stu principiu.

10 Principii di prugrammazione orientata à l'ughjetti chì ogni sviluppatore deve sapè

Sè avete bisognu di cambià qualcosa in questu, hà da piglià assai tempu, perchè avete da cambià tutte e parte di u codice chì anu una cunnessione cù u frammentu desideratu.

A strada, apertura-chiusu hè unu di i principii di SOLID.

Principiu di Responsabilità Unicu (SRP)

Un altru principiu da u settore SOLID. Dice chì "ci hè solu un mutivu chì porta à un cambiamentu di classa". A classe hà solu un compitu. Si pò avè parechji metudi, ma ognunu di li veni usatu solu per risolve un prublema cumuni. Tutti i metudi è e pruprietà duveranu serve solu questu.

10 Principii di prugrammazione orientata à l'ughjetti chì ogni sviluppatore deve sapè

U valore di stu principiu hè chì scioglie u ligame trà un unicu pezzu di software è u codice. Aghjunghjendu più di una funziunalità à una classa introduce una relazione trà e duie funzioni. Cusì, se cambiassi unu di elli, ci hè una grande chance di spoil u sicondu, in relazione cù u primu. È questu significa aumentà i cicli di teste per identificà tutti i prublemi in anticipu.

Principiu di Inversione di Dipendenza (DIP)

10 Principii di prugrammazione orientata à l'ughjetti chì ogni sviluppatore deve sapè

U sopra hè un esempiu di codice induve l'AppManager dipende da l'EventLogWriter, chì à u turnu hè strettamente ligatu à l'AppManager. Sè avete bisognu di un modu diversu per vede a notificazione, sia un push, SMS, o email, avete bisognu di cambià a classa AppManager.

U prublema pò esse risolta cù DIP. Allora, invece di AppManager, dumandemu un EventLogWriter, chì serà injected usendu u framework.

DIP permette di rimpiazzà facilmente moduli individuali cù altri cambiendu u modulu di dependenza. Questu permette di cambià un modulu senza affettà l'altri.

A cumpusizioni invece di l'eredità

10 Principii di prugrammazione orientata à l'ughjetti chì ogni sviluppatore deve sapèI dui modi principali di riutilizà u codice sò l'eredità è a cumpusizioni, ognunu cù i so vantaghji è svantaghji. U sicondu hè di solitu preferitu perchè hè più flexible.

A cumpusizioni vi dà l'abilità di cambià u cumpurtamentu di una classa à u tempu di esecuzione per stabilisce e so proprietà. Quandu implementate interfacce, u polimorfismu hè utilizatu, chì dà una implementazione più flexible.

Ancu "Effective Java" Joshua Bloch cunsigliu di favurizà a cumpusizioni annantu à l'eredità.

Principiu di sustituzione di Barbara Liskov (LSP)

Un altru principiu da u toolkit SOLID. Dice chì i sottotipi devenu esse rimpiazzabili per un supertipu. Questu hè, i metudi è e funzioni chì travaglianu cù una superclasse deve esse capace di travaglià senza prublemi cù i so subclassi.

LSP hè in relazione cù u Principiu di Responsabilità Unicu è u Principiu di Separazione di Responsabilità. Se una classa furnisce più funziunalità di una subclasse, allora l'ultima ùn sustene micca qualchì funziunalità, violendu stu principiu.

Eccu un pezzu di codice chì cuntradisce LSP.

10 Principii di prugrammazione orientata à l'ughjetti chì ogni sviluppatore deve sapè

U metudu di l'area (Rectangle r) calcula l'area di un Rectangle. U prugramma hà da crash dopu à esecutà Square, postu chì Square ùn hè micca un Rectangle quì. Sicondu u principiu LSP, e funzioni chì utilizanu riferimenti à e classi di basa anu da pudè usà l'uggetti di classi derivati ​​senza struzzioni supplementari.

Stu principiu, chì hè una definizione specifica di un subtipu, hè statu prupostu da Barbara Liskov in u 1987 in una cunferenza in a keynote intitulata "Astrazione di Dati è Gerarchia" - da quì u so nome.

Principiu di separazione di l'interfaccia (ISP)

Un altru principiu SOLID. Sicondu ellu, una interfaccia chì ùn hè micca utilizata ùn deve esse implementata. A seguita di stu principiu aiuta à u sistema à esse flexible è refactorable quandu facenu cambiamenti à a logica di u travagliu.

A maiò spessu, sta situazione si trova quandu l'interfaccia cuntene parechje funziunalità à una volta, è u cliente hà bisognu di solu unu di elli.

Siccomu a scrittura di una interfaccia hè un compitu cumplessu, dopu chì u travagliu hè finitu, cambià senza rompe nunda serà un prublema.

U vantaghju di u principiu ISP in Java hè chì tutti i metudi devenu esse implementati prima, è solu allora ponu esse utilizati da e classi. Dunque, u principiu permette di riduce u numeru di metudi.

10 Principii di prugrammazione orientata à l'ughjetti chì ogni sviluppatore deve sapè

Programmazione per una interfaccia, micca una implementazione

Quì tuttu hè chjaru da u nome. L'applicazione di stu principiu porta à un codice flexible chì pò travaglià cù qualsiasi implementazione di l'interfaccia nova.

Duvete aduprà un tipu d'interfaccia per variàbili, tipi di ritornu, o u tipu di un argumentu di metudu. Un esempiu hè aduprendu SuperClass invece di SubClass.

Hè:

Lista numeri = getNumbers ();

Ma micca:

Numeri ArrayList = getNumbers ();

Eccu una implementazione pratica di ciò chì hè dettu sopra.

10 Principii di prugrammazione orientata à l'ughjetti chì ogni sviluppatore deve sapè

Principiu di delegazione

Un esempiu cumuni hè i metudi equals() è hashCode() in Java. Quandu dui ogetti anu da esse paragunati, sta azione hè delegata à a classa approprita invece di a classa cliente.

U vantaghju di u principiu hè chì ùn ci hè micca duplicazione di codice è hè relativamente faciule di cambià u cumpurtamentu. Hè ancu applicà à a delegazione di l'avvenimenti.

10 Principii di prugrammazione orientata à l'ughjetti chì ogni sviluppatore deve sapè

Tutti issi principii permettenu di scrive un codice più flexible, bellu è affidabile cù alta coesione è bassu accoppiamentu. Di sicuru, a teoria hè bona, ma per un sviluppatore per cumincià veramente à aduprà a cunniscenza acquistata, a pratica hè necessaria. U passu prossimu dopu à maestru di i principii di OOP pò esse u studiu di mudelli di cuncepimentu per risolve i prublemi cumuni di sviluppu di software.

Skillbox consiglia:

Source: www.habr.com

Add a comment