Voi da un exemplu. Există o funcție. în care este necesar să se transfere două proprietăți ale a două obiecte diferite. Acest lucru ridică întrebarea cum să transferăm corect aceste proprietăți - direct sau să transferăm obiecte și apoi în corpul funcției pentru a extrage proprietățile din ele?
Este clar că din punct de vedere al practicității, prima opțiune este mai bună. Dar care opțiune va lua în considerare abordările corecte ale programării OOP și principiile SOLID? Nu va contrazice prima variantă?
presetate 3 noiembrie '15 la 13:21
Voi adăuga specificații: funcția adaugă o intrare în tabel. Această înregistrare va afișa "prietenia" celor doi utilizatori, adică ambii parametri sunt id-ul celor două intrări din tabelul utilizatorilor. Deci, cum este mai bine: ca parametri ai acestei funcții de a transfera simultan utilizatorul id sau obiecte? Am întrebat imediat întrebarea mai generală, deoarece cred că întrebarea este relevantă pentru multe situații. - raskopin la 3 noiembrie 15 la 13:40
Recomandările de la suporterii codului curat sunt destul de clare - este mai adecvată transmiterea dependențelor minime, adică a datelor, și nu a obiectelor în care sunt conținute aceste date. Cu cât mai puțin o funcție necesită cunoașterea lumii exterioare, cu atât este mai ușor să o testezi și să o însoțești. Aceasta este teoria.
În practică, există adesea o întrebare de genul „Ce se întâmplă dacă am nevoie de altceva și trebuie să se schimbe semnătura“ sau „dacă ip textul prokinut sau IPADDRESS, acolo ValueObject pentru IP“.
Deci, este mai bine să înceapă cu un contract minim, dar să ia în considerare cerințele actuale și viitoare ale funcției, care este, cât de dificil este de a schimba semnătura pentru a adăuga câmpuri sau să înlocuiască obiectul și caracteristicile datelor obiectului.
Postat pe 3 noiembrie '15 la 18:52
Principiul principal este principiul oportunității. De ce transferați obiecte întregi atunci când sunt necesare proprietățile lor individuale? Mai ales semantica: să spunem, funcția (sau mai degrabă metoda) adaugă două numere și vă numesc pe scurt. În jur, este clar că rezumă, pentru că nu toată lumea înțelege de ce obiecte.
Alt lucru, dacă intenționați să utilizați alte proprietăți ale acestor obiecte în viitor. Apoi abordarea cu obiectele este corectă.
Postat 3 noiembrie '15 la 13:28
Minusanul, tk. răspunsul nu ia în considerare toate opțiunile posibile, ci doar un caz special. Iar acest caz particular nu este atât de comun în practică. - Razzwan în 3 noiembrie 15 la 13:31
Aș dori, de asemenea, să văd un răspuns care să acopere toate opțiunile posibile. Dacă îl scrieți deja, vă doresc să faceți o cafea și o tastatură puternică. - Mik pe 3 noiembrie 15 la 13:40