Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Cum sterg mails din Promotions

Vanzare cumparare fara transfer b...

Receptie ciudata, in functie de t...

Donez medicamente renale ptr pisica
 Ce componenta e asta si ce ziceti...

Dupa 20 ani de facultate, am uita...

Mobile.de ofera imprumut de bani ...

problema test grila
 Digi24 a disparut de pe TV Lg

Drept de proprietate intelectuala...

Jante noi shitbox

Trinitas TV 4K
 Dacia 1316 cu 6 usi ...

Frecventa modificata radio

Un nou pericol pt batrani

Ar trebui sa vindem imobiliarele ...
 

Getteri si Setteri

- - - - -
  • Please log in to reply
48 replies to this topic

#37
Iulius-Foyas

Iulius-Foyas

    Active Member

  • Grup: Members
  • Posts: 1,361
  • Înscris: 21.04.2019

View PostOriginalCopy, on 07 mai 2019 - 04:05, said:

Adevarul e ca si cainele meu seteaza.

Picteaza.

Canta la pian.

E un scump de caine.

[ https://www.youtube-nocookie.com/embed/JWZj_xbTwfc?feature=oembed - Pentru incarcare in pagina (embed) Click aici ]
Muzica lui e atat de placuta...
codul OOP pt modelarea acestui eveniment  este:
dog.setState("playing piano");



#38
Mosotti

Mosotti

    Geniu umil

  • Grup: Senior Members
  • Posts: 33,295
  • Înscris: 21.04.2004

View PostIulius-Foyas, on 06 mai 2019 - 22:54, said:

Pai oricum daca ai peste 5 argumente intr-un constructor sau metoda deja logica trebuie refactorizata, doarece iti creste entropia software.
Cei ai dat tu cu trenul ala de propietati seamana mai degraba a entitate JPA  mapata conform unei tabele ce contine acele date agregate.
Daca ai 5 argumente intr-un constructor inseamna ca trebuie sa mai tai din ele ca-ti joaca ochii-n cap, nu pentru ca-ti creste entropia lu peste. De-aia s-au si inventat named parameters si builder pattern si tot felul de alte trick-uri gen mapuri. Faptul ca un obiect depinde de 100 de parametrii n-are treaba cu vreo entropie, atita timp cit aia e natura logica a obiectului. Ce fubipte entropia este tendinta asta relativ noua de a sparge un obiect in 14, dar nu din ratiuni logice, ci pentru ca depaseste x linii de cod sau mai mult de n parametri. Si asa se creeaza jde milioade de clase, cu getteri si setteri fara sens, care practic sint doar containere cu zero logica in ele, singurul lor motiv de existenta fiind doar "reducerea complexitatii contructorului" :lol:

View PostOriginalCopy, on 07 mai 2019 - 04:05, said:

Muzica lui e atat de placuta...
[ https://www.youtube-nocookie.com/embed/zeoT66v4EHg?feature=oembed - Pentru incarcare in pagina (embed) Click aici ]

#39
DemocracySucks

DemocracySucks

    Junior Member

  • Grup: Members
  • Posts: 227
  • Înscris: 06.04.2019

View PostOriginalCopy, on 07 mai 2019 - 04:05, said:

Adevarul e ca si cainele meu seteaza.
Adevarul e ca ai ramas fara argumente si ai dat-o pe trollat! ;)

Se vede cu lejeritate ca tu n-ai nicio experienta cu OOP si nu stii despre ce vorbesti. OOP se invata serios din carti, folosind un limbaj cu suport full OOP, nu prosteli de pe bloguri.

#40
Iulius-Foyas

Iulius-Foyas

    Active Member

  • Grup: Members
  • Posts: 1,361
  • Înscris: 21.04.2019

View PostMosotti, on 07 mai 2019 - 04:40, said:

Daca ai 5 argumente intr-un constructor inseamna ca trebuie sa mai tai din ele ca-ti joaca ochii-n cap,
Pana aici, perfect de acord.

Quote

nu pentru ca-ti creste entropia lu peste.
Entropia software reprezinta gradul de dezordine care exista sau pe timp lung care se poate forma.
Conform https://www.webopedi...re_entropy.html =>
"Software entropy refers to the tendency for software, over time, to become difficult and costly to maintain. A software system that undergoes continuous change, such as having new functionality added to its original design, will eventually become more complex and can become disorganized as it grows, losing its original design structure."

Practic o clasa cu un tren de propietati,  daca este folosita doar ca entitate JPA , adica sa faca maparea dintre o tabela (a caror valori sunt rezultatele unor agregari)
si un obiect OOP, atunci este ok.
Insa daca aceasta clasa este folosita in continuare pt modelarea unui algortim OOP in jurul acesteia, este "sinucidere" curata.

De aceea cand vad clasa ta , eu am in cap urmatoarea schema:
Attached File  PuppyModel.PNG   23.94K   13 downloads

Clasa ta Puppy pt mine este PuppyJPA , iar clasa mea este de fapt PuppyOOP.

Quote

De-aia s-au si inventat named parameters si builder pattern si tot felul de alte trick-uri gen mapuri. Faptul ca un obiect depinde de 100 de parametrii n-are treaba cu vreo entropie, atita timp cit aia e natura logica a obiectului.
Din moment ce entropia reprezinta gradul de dezordine, gestionarea a 100 de parametrii intr-un cod OOP este o invitatie la dezastru, daca si numai daca acest obiect este folosit la modelarea unui business-logic (parerea mea personala)

Insa daca obiectul cu 100 de params este folosit doar  ca depozit temporar de informatii atunci cand se face trecerea dintre diferite medii de prelucrare, atunci da consider ca poate sa aiba si 35 de mii de parametrii.

Quote

Si asa se creeaza jde milioade de clase, cu getteri si setteri fara sens, care practic sint doar containere cu zero logica in ele, singurul lor motiv de existenta fiind doar "reducerea complexitatii contructorului" Posted Image
De fapt reducerea complexitatii obiectului, si atunci acele containere cu aparent zero-logica pt business-logic, de fapt sunt dependintele obiectul PuppyOOP(vezi schema de mai sus) care modeleaza interactiunea dintre alte obiecte si Puppy si fluxul logic  poate fi urmarit foarte usor, la fel si debuggingul.

Daca de exemplu intr-o alta sectiune a codului ai probleme ca o propietate energetica a lui Puppy atunci te duci direct in  PuppyEnergy si vezi cauza si nu stai in mod contrar sa cauti prin toata clasa Puppy.

Cum este clasa Puppy fara gruparea ei pe obiecte de propietati:
https://i0.wp.com/ww...03/IMG_8448.jpg

Cum este clasa Puppy cu aceasta grupare(entropie software minimizata):
https://thrivehomeor..._8675.jpg?w=620

#41
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,445
  • Înscris: 10.08.2005

View PostIulius-Foyas, on 06 mai 2019 - 22:54, said:


Nu este, ce spui tu nu are legatura cu ce spune eu.Era vorba doar de actualizarea unei stari al unui obiect printr-un setter, dar atunci cand aceasta mic actualizare da peste cap cutumele si politici de programare(si nu programare in sine), au loc cutremere se pare. Posted Image
starile se schimba  intern
consideram o clasa user (forum)

this.setState("trolling");
asta o face el, intern, incapsulat,
eu nu pot sa spun
user.setState("trolling");
dar pot spune
user.setWarningLevel(DIGIT);
user.setSuspend(DURATION);

View PostIulius-Foyas, on 07 mai 2019 - 04:28, said:


codul OOP pt modelarea acestui eveniment  este:
dog.setState("playing piano");

starile nu sunt actiuni, dar ce stiu eu, am uitat ca tu esti expert

Edited by MarianG, 07 May 2019 - 08:39.


#42
Mosotti

Mosotti

    Geniu umil

  • Grup: Senior Members
  • Posts: 33,295
  • Înscris: 21.04.2004
Multi parametrii nu inseamna dezordine, decit daca se pot grupa logic. Gruparea arbitrara, de genul ParameterSet1, 2, 3, facuta cu scopul unic de a nu vedea multi parametri la un loc, asta chiar duce la dezastru.
Unele lucruri sint complicate in esenta lor si asta-i viata, e doar o iluzie ca le faci mai simple grupind parametri de-a lelea. Ca regula, daca un obiect are 30 de parametri si ii grupezi dupa ce te taie capul, pentru ca gruparea sa aibe sens trebuie sa fii in stare sa spui instant din ce grup face parte parametrul. Mai mult oricine vine dupa tine trebuie sa zica “da, are sens” si nu “cine a fost boul care a zis ca parametrul asta are vreo legatura cu celalalt?”, dupa care sa refactorizeze cam cum crede el ca e logic, dupa care vii tu si zici “wtf, cine a mutat parametrii astia, era clar ca-s din categoria cealalta :w00t:


#43
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,445
  • Înscris: 10.08.2005
Kaizen (5S) in cod de productie.

#44
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,445
  • Înscris: 10.08.2005

View PostDemocracySucks, on 06 mai 2019 - 22:17, said:


Nu-i un detaliu de implementare. Set este un verb care descrie in engleza actiunea de a "seta" ceva. Mai mult, este un idiom ultra-raspandit in programare si nu exista absolut niciun motiv pentru a-l schimba cu alte bazaconii care pot induce in eroare. Si mai mult "focusOnPerson" nici intr-un miliard de ani nu ar putea fi echivalentul unui "setCoordinate". Un focus pe ceva e o actiune mai complexa decat setCoordinate si cel mai probabil implica alte rutine si eventual ceva setari de coordonate.

Deci in lumea reala ai putea avea ceva metoda focusOnPerson(), care probabil ar apela alte metode, iar acesta metoda sau o alta metoda dintre cele apelate ar apela undeva ceva in genul setCoordinate
Corect, set inseamna ce ai spus tu, cum e in lumea reala?
dog.setState("not hungry")
sau
if (dog.getState === "hungry") human.setAction("feed dog")

Edited by MarianG, 07 May 2019 - 08:54.


#45
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006

View PostIulius-Foyas, on 07 mai 2019 - 08:01, said:

Clasa ta Puppy pt mine este PuppyJPA , iar clasa mea este de fapt PuppyOOP.
Fara sarcasm, numirea aleasa de tine e cam singurul lucru corect pe care l-ai face.

Doar PuppyOOP e cod OOP, restul e un simulacru de OOP.

Cred ca e bine ca marchezi in numele claselor tale care dintre clase e OOP si care nu.

#46
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,239
  • Înscris: 24.02.2007
Exemplu de cerinta, si asta oarecum simplista:

https://forum.softpe...8#entry24217027

#47
iulian_1976

iulian_1976

    Active Member

  • Grup: Members
  • Posts: 1,576
  • Înscris: 10.05.2008
Ca sa competez linkul pus se cerea in OOP&MVC, cu toate clasele aferente etc controler tot tacamul fara DB, serializari, nu e o treaba de 30 de minute cum precizeaza unii.

Edited by iulian_1976, 07 May 2019 - 18:59.


#48
Mosotti

Mosotti

    Geniu umil

  • Grup: Senior Members
  • Posts: 33,295
  • Înscris: 21.04.2004
Aia nu-i cerinta e aberatie. Nici pina in ziua de azi n-am inteles ce treaba avea framework-ul web cu MVC cu parsarea unui json dintr-un fisier text :lol:

#49
Iulius-Foyas

Iulius-Foyas

    Active Member

  • Grup: Members
  • Posts: 1,361
  • Înscris: 21.04.2019
N-ai de unde sa stii pana cand nu vezi textul cerintelor in original.

Quote

Multi parametrii nu inseamna dezordine, decit daca se pot grupa logic. Gruparea arbitrara, de genul ParameterSet1, 2, 3, facuta cu scopul unic de a nu vedea multi parametri la un loc, asta chiar duce la dezastru.
Dar eu nu m-am referit sa grupez arbitrar ci m-am referit la grupare de propietati dupa rol functional.

Quote

Mai mult oricine vine dupa tine trebuie sa zica “da, are sens” si nu “cine a fost boul care a zis ca parametrul asta are vreo legatura cu celalalt?”, dupa care sa refactorizeze cam cum crede el ca e logic, dupa care vii tu si zici “wtf, cine a mutat parametrii astia, era clar ca-s din categoria cealalta
Chestia asta relativa, pt poti avea urmatoarele situatii:
1.poate cineva sa faca grupari dupa propietati si apoi sa vina altcineva sa modifice tot pt ca nu este de acord
2.poate cineva sa lase acel tren de propietati si  apoi sa vina altcineva sa modifice  tot  pt ca nu este de acord.

In fond nimeni  din noi nu programeaza cu gandul  "ce va zice ala care vine dupa". Care  "ala" ? Care "dupa" ? :lol:

Anunturi

Chirurgia endoscopică a hipofizei Chirurgia endoscopică a hipofizei

"Standardul de aur" în chirurgia hipofizară îl reprezintă endoscopia transnazală transsfenoidală.

Echipa NeuroHope este antrenată în unul din cele mai mari centre de chirurgie a hipofizei din Europa, Spitalul Foch din Paris, centrul în care a fost introdus pentru prima dată endoscopul în chirurgia transnazală a hipofizei, de către neurochirurgul francez Guiot. Pe lângă tumorile cu origine hipofizară, prin tehnicile endoscopice transnazale pot fi abordate numeroase alte patologii neurochirurgicale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate