Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Incalzire in pardoseala etapizata

Suprataxa card energie?!

Cum era nivelul de trai cam din a...

probleme cu ochelarii
 Impozite pe proprietati de anul v...

teava rezistenta panou apa calda

Acces in Curte din Drum National

Sub mobila de bucatarie si sub fr...
 Rezultat RMN

Numar circuite IPAT si prindere t...

Pareri brgimportchina.ro - teapa ...

Lucruri inaintea vremurilor lor
 Discuții despre TVR Sport HD.

Cost abonament clinica privata

Tremura toata, dar nu de la ro...

Renault Android
 

Getteri si Setteri

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

#19
Mosotti

Mosotti

    Geniu umil

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

View PostIulius-Foyas, on 06 mai 2019 - 20:19, said:

modificarea starii lui Puppy in interactiunea simpla dintre Puppy si  Stapan ?
Exemplul e prost, pentru ca starea aia nu inseamna nimic, poti pune ce ai chef in ea, practic e o proprietate si atit, poti sa o pui doar in constructor. Dar sa ne imaginam ca Georgel de la asociatia chinologica "Catelul Fericit" te roaga disperat sa-l ajuti pentru ca tocmai l-a lasat balta programatorul. Ce ai vrea sa vezi in codul ala, asta:

Puppy puppy = new Puppy(3, 5, 5, 3, 4, 4, 5, 3, 5, 1, 4, 1, 4, 4, 5, 1, 3, 5, 4, 5, 3, 5, 5, 5, 4, 2, 5, 1, 2, 4, 5);

sau asta

Puppy puppy = new Puppy()
puppy.setAdaptability(3);
puppy.setAllAroundFriendliness(5);
puppy.setExerciseNeeds(5);
puppy.setHealthGrooming(3);
puppy.setTrainability(4);
puppy.setAdaptsWelltoApartmentLiving(4);
puppy.setAffectionatewithFamily(5);
puppy.setAmountOfShedding(3);
puppy.setDogFriendly(5);
puppy.setDroolingPotential(1);
puppy.setEasyToGroom(4);
puppy.setEasyToTrain(1);
puppy.setEnergyLevel(4);
puppy.setExerciseNeeds(4);
puppy.setFriendlyTowardStrangers(5);
puppy.setGeneralHealth(1);
puppy.setGoodForNoviceOwners(3);
puppy.setIncrediblyKidFriendlyDogs(5);
puppy.setIntelligence(4);
puppy.setIntensity(5);
puppy.setPotentialForMouthiness(3);
puppy.setPotentialForPlayfulness(5);
puppy.setPotentialForWeightGain(5);
puppy.setPreyDrive(5);
puppy.setSensitivityLevel(4);
puppy.setSize(2);
puppy.setTendencyToBarkOrHowl(5);
puppy.setToleratesBeingAlone(1);
puppy.setToleratesColdWeather(2);
puppy.setToleratesHotWeather(4);
puppy.setWanderlustPotential(5)

View PostOriginalCopy, on 06 mai 2019 - 20:28, said:

Asta cu autocomplete din IDE e cam singurul argument decent pro-setX().

Cu care nu sunt de acord din urmatorul rationament: setX e detaliu de implementare. In meeting cu product owner sau cine imi descrie business rules, cream un document. Acel document foloseste terminologia de business. PO nu va spune "setCoordinate", ci "focusOnPerson" in acele cerinte.
Daca obiectul e complex si la fiecare setter in desguise ii dai un nume ales random de "product owner", doar ca sa pretinzi ca nu folosesti setteri se duce dracului parascovenia. Ideea este sa nu te uiti non stop in documente, sa-ti vorbeasca codul... Poate ca pentru tine care ai discutat cu product owneru lucrurile ramin in memorie, dar pentru unu care vine peste un an sau doi sau cinci, o sa t e injure garantat.

Acuma mie nu mi se pare ca setCoordinate si focusOnPerson au acealsi inteles. setCoordinate imi zice ca poti seta orice coordonata, iar focusOnPerson vorbeste despre coordonate specifice. Asta e cu totul altceva de ce zic eu...

#20
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,194
  • Înscris: 24.02.2007
Daca limbajul permite, prefer sa vad:
Puppy puppy = new Puppy(
	adaptability: 3,
	allAroundFriendliness: 5,
	exerciseNeeds: 5,
	healthGrooming: 3,
	trainability: 4,
	adaptsWelltoApartmentLiving: 4,
	affectionatewithFamily: 5,
	amountOfShedding: 3,
	dogFriendly: 5,
	droolingPotential: 1,
	easyToGroom: 4,
	easyToTrain: 1,
	energyLevel: 4,
	exerciseNeeds: 4,
	friendlyTowardStrangers: 5,
	generalHealth: 1,
	goodForNoviceOwners: 3,
	incrediblyKidFriendlyDogs: 5,
	intelligence: 4,
	intensity: 5,
	potentialForMouthiness: 3,
	potentialForPlayfulness: 5,
	potentialForWeightGain: 5,
	preyDrive: 5,
	sensitivityLevel: 4,
	size: 2,
	tendencyToBarkOrHowl: 5,
	toleratesBeingAlone: 1,
	toleratesColdWeather: 2,
	toleratesHotWeather: 4,
	wanderlustPotential: 5)


Cu identarea de rigoare, pe care n-o pot exemplifica aici ca-mi strica forumul formatarea...

#21
Iulius-Foyas

Iulius-Foyas

    Active Member

  • Grup: Members
  • Posts: 1,361
  • Înscris: 21.04.2019
@Mossoti
Codul tau seamna cu unul generat de un framework. Si in plus eu aveam o propietate nu 15 mii. Dar sa zicem ca aveeam 15 mii atunci codul ala al tau il grupam dupa anumite criterii in obiecte:
si anume PuppyEnergy, PuppyTolerance, PuppyCognitiveProps
si atunci aveam :

class Puppy {
private String state;
private PuppyEnergy energy;
private PuppyTolerance tolerance;
private PuppyCognitiveProps cognitiveProps;

public Puppy(PuppEnergy energy, PuppyTolerance tolerance, PuppyCognitiveProps cognitiveProps){
	 this.energy = energy;
	 this.tolerance = tolerance;
	 this.cognitiveProps = cognitiveProps
	 this.state = "doing nothing"
}

public void setPuppyEnergy(PuppyEnergy energy){
	 this.energy = energy;
}

public PuppyEnergy getPuppyEnergy(){
	 return energy;
}

public void setPuppyTolerance(PuppyTolerance tolerance){
	 this.tolerance = tolerance;
}

public PuppyTolerance getPuppyTolerance(){
	 return tolerance;
}

public void setPuppyCognitiveProps(PuppyCognitiveProps cognitiveProps){
	 this.cognitiveProps = cognitiveProps;
}

public PuppyCognitiveProps getCognitiveProps(){
	 return cognitiveProps;
}

}
//in alta parte
//se intantiaza urmatoarele obiecte (care grupeaza
//trenul ala de propietati): PuppyEnergy, PuppyTolerance, PuppyCognitiveProps
Puppy puppy = new Puppy(energy, tolerance, cognitiveProps)

//stapanul se joaca cu puppy afara, si dupa un timp, puppy oboseste
//codul nostru trebuie sa reflecte ca puppy este obosit. Sa presupunem ca
// proprietatea care ne spune nivelul energiei este energyLevel si ca aceasta
//se afla in obiectul PuppyEnergy, a carei valoare este 4 atunci cand am instantiat
//obiectul PuppyEnergy.
//asadar puppyEnergy avea inainte de joaca valoare 4. Dupa joaca sa zicem ca scade la 1.
//Codul care reflecta aceasta schimbare a realitatii este:
energy.setEnergyLevel(1);
puppy.setPuppyEnergy(energy); //update la puppy cu noua stare a lui PuppyEnergy.

//insa dupa joaca catelului nostru i se face somn si adoarme,si atunci:
puppy.setState("sleeping");



@OriginalCopy:
Pai ti s-a dat cerinta si definitia problemei

Edited by Iulius-Foyas, 06 May 2019 - 21:39.


#22
OriginalCopy

OriginalCopy

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

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

View PostIulius-Foyas, on 06 mai 2019 - 21:34, said:

@OriginalCopy:
Pai ti s-a dat cerinta si definitia problemei
Unde? Aia numesti tu definitie de problema? Nu domne', problema aia reala pe care trebuie sa o rezolvi. Faptul ca X trebuie sa seteze starea lui Y nu e definitie de problema.

View PostIulius-Foyas, on 06 mai 2019 - 21:34, said:

si atunci aveam :
Oribil. Defineste problema, ca altfel vorbim ca sa ne aflam in treaba.

#23
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,383
  • Înscris: 10.08.2005
Limba romana, nu stiu daca este materna la tine, am impresia ca esti turc, (troll stiu ca esti)
starea de somnolenta nu inseamna ca doarme, ci ca adoarme
iti spun inca odata, starile sunt ceva ce CERI, nu se setezi
apoi, undeva ar trebui sa ai o lista (ENUM) cu stari (UUID ), nu stringuri

Edited by MarianG, 06 May 2019 - 21:50.


#24
Mosotti

Mosotti

    Geniu umil

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

View PostIulius-Foyas, on 06 mai 2019 - 21:34, said:

@Mossoti
Codul tau seamna cu unul generat de un framework. Si in plus eu aveam o propietate nu 15 mii. Dar sa zicem ca aveeam 15 mii atunci codul ala al tau il grupam dupa anumite criterii in obiecte:
si anume PuppyEnergy, PuppyTolerance, PuppyCognitiveProps
si atunci aveam :

[code]
class Puppy {
private String state;
private PuppyEnergy energy;
private PuppyTolerance tolerance;
private PuppyCognitiveProps cognitiveProps;
Aia e cea mai nefericitas solutie, gruparea parametrilor dupa criterii scoase din anus, doar pentru a avea "mai putini parametri". Atita timp cit in cerinte nu ti se specifica o anumita organizare a datelor, mai bine te abtii. Ce inseamna pentru tine PuppyEnergy nu inseamna si pentru altii, doar faci lumea sa caute dupa proprietati prin clase random :lol:

View Postdani.user, on 06 mai 2019 - 21:21, said:

Daca limbajul permite, prefer sa vad:
Chestia ai poti s-o faci din IntelliJ, dar io n-as scrie cod pentru IDE. De multe ori vrei sa te uiti in git de exemplu sa vezi ce s-a schimbat si vezi ca aparut un 4 si un 3 in constructor, apoi trebuie sa vezi ce dracu sint alea in definitia clasei etc etc

Mai mult, parametrii nu sint neaparat obligatorii intr-un exemplu real.

Probabil cel mai sanatos este sa folosesti Builder pattern, dar asta inseamna probabil de vreo 3 ori mai mult cod de scris si de avut grija pina la sfirsitul zilelor, pina la urma se pune intrebarea daca merita sa aplici aceste principii la singe sau sa faci o combinatie intre principiu si folosirea neuronilor :)

#25
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,383
  • Înscris: 10.08.2005
Lectie de fizica,
energia se pierede prin efectuarea de lucru mecanic,
setEnegry este o functie care spune care este energia maxima unui sistem,
energie pe care o pierzi sau o castigi: cafea, macare, pastile, etc
dar astea sunt addEnergy(valueOf(item))

Edited by MarianG, 06 May 2019 - 21:57.


#26
OriginalCopy

OriginalCopy

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

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

View PostMarianG, on 06 mai 2019 - 21:57, said:

Lectie de fizica,
energia se pierede prin efectuarea de lucru mecanic,
setEnegry este o functie care spune care este energia maxima unui sistem,
energie pe care o pierzi sau o castigi: cafea, macare, pastile, etc
dar astea sunt addEnergy(valueOf(item))
In Troll-land, cainii se supun stapanilor. Daca stapanul zice: "azi ai energie cat soarele", cainele se supune neconditionat, nu face febra, nu explodeaza, nimic.

Ba mai mult, nu doar stapanul poate face asta, ci orice locuilor*** din Troll-land: iti imprumuta cainele si are voie sa ii dea orice comanda, iar cainele asculta.

La gunoi cu legile fizicii, cu cerintele problemei, cu definitia problemei! Sunt overrated, troll-land e in expansiune cu orice pret.

*** pentru ca nu-i asa, daca IDE-ul iti genereaza un setter, atunci trebuie sa-ti genereze si un getter public.

Edited by OriginalCopy, 06 May 2019 - 22:05.


#27
DemocracySucks

DemocracySucks

    Junior Member

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

View PostOriginalCopy, on 06 mai 2019 - 20:28, said:

Cu care nu sunt de acord din urmatorul rationament: setX e detaliu de implementare. In meeting cu product owner sau cine imi descrie business rules, cream un document. Acel document foloseste terminologia de business. PO nu va spune "setCoordinate", ci "focusOnPerson" in acele cerinte.
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

Edited by DemocracySucks, 06 May 2019 - 22:22.


#28
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,194
  • Înscris: 24.02.2007

View PostMosotti, on 06 mai 2019 - 21:50, said:

De multe ori vrei sa te uiti in git de exemplu sa vezi ce s-a schimbat si vezi ca aparut un 4 si un 3 in constructor, apoi trebuie sa vezi ce dracu sint alea in definitia clasei etc etc

C# (si nu e singurul) te lasa sa mentionezi numele parametrului atunci cand apelezi metoda/constructorul. Asa se vede si in git exact ce inseamna 4 sau 3. Sau metoda(true, false, false, false, true).

#29
Mosotti

Mosotti

    Geniu umil

  • Grup: Senior Members
  • Posts: 33,295
  • Înscris: 21.04.2004
E doar un setter sub acoperire, care poate fi o idee buna sau nu, in functie de context. De exemplu, poate ca nu vrei sa ii adaugi prea multa energie, ca explodeaza. Asta inseamna ca trebuie ca addEnergy sa arunce o exceptie TooMuchEnergyException, pe care trebuie sa o verifici oriunde adaugi energie (asta in cazul fericit in care ai exceptii, altfel trebuie sa faci metoda sa returneze un boolean sau ceva sau trebuie sa validezi extern, ceea ce cam face inutila o metoda add in loc de set), in plus trebuie sa ai un maxEnergy care sa fie folosir la  dar care sa nu fie constant durata vietii obiectului, de exemplu sa varieze cu temperatura, pac ai nevoie de un setter chior. Treburile nu-s batute in cuie, totul depinde de cerinte.



#30
DemocracySucks

DemocracySucks

    Junior Member

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

View Postdani.user, on 06 mai 2019 - 22:20, said:

C# (si nu e singurul) te lasa sa mentionezi numele parametrului atunci cand apelezi metoda/constructorul. Asa se vede si in git exact ce inseamna 4 sau 3. Sau metoda(true, false, false, false, true).
Named arguments, nu e nimic chiar nou. Insa sa ai constructori cu o multime de argumente(10-15-20), ceva e putred a naibii!

#31
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,194
  • Înscris: 24.02.2007
Depinde... fara a discuta pe cod concret/practic e cam singura concluzie ce poata fi trasa.

#32
Mosotti

Mosotti

    Geniu umil

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

View Postdani.user, on 06 mai 2019 - 22:20, said:



C# (si nu e singurul) te lasa sa mentionezi numele parametrului atunci cand apelezi metoda/constructorul. Asa se vede si in git exact ce inseamna 4 sau 3. Sau metoda(true, false, false, false, true).
Nu te scapa de problema cu obligativitatea. Daca vrei sa setezi 3 parametri si sa lasi 7 default scrii de nebun la constructori...

#33
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,194
  • Înscris: 24.02.2007
In Java poate, in alte limbaje ai parametrii optionali.

class Puppy
{
   Puppy(int adaptability, int allAroundFriendliness, 
		 int? exerciseNeeds = default, int? healthGrooming = default, int? trainability = default, int? adaptsWelltoApartmentLiving = default) 
   {
	   ...
   }
}
...
Puppy puppy = new Puppy(
		adaptability: 3,
		allAroundFriendliness: 5,
		trainability: 4)


Edited by dani.user, 06 May 2019 - 22:34.


#34
Mosotti

Mosotti

    Geniu umil

  • Grup: Senior Members
  • Posts: 33,295
  • Înscris: 21.04.2004
Well, nice features are nice...

#35
Iulius-Foyas

Iulius-Foyas

    Active Member

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

View PostMosotti, on 06 mai 2019 - 21:50, said:

Aia e cea mai nefericitas solutie, gruparea parametrilor dupa criterii scoase din anus, doar pentru a avea "mai putini parametri". Atita timp cit in cerinte nu ti se specifica o anumita organizare a datelor, mai bine te abtii. Ce inseamna pentru tine PuppyEnergy nu inseamna si pentru altii, doar faci lumea sa caute dupa proprietati prin clase random Posted Image
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.


View PostMarianG, on 06 mai 2019 - 21:57, said:

Lectie de fizica,
energia se pierede prin efectuarea de lucru mecanic,
setEnegry este o functie care spune care este energia maxima unui sistem,
energie pe care o pierzi sau o castigi: cafea, macare, pastile, etc
dar astea sunt addEnergy(valueOf(item))
dar aici nu este vorba de asa ceva.Aici trebuie ca  sa transmiti starea modificata din PuppyEnergy asupra lui Puppy, atata tot.

View PostMarianG, on 06 mai 2019 - 21:48, said:

Limba romana, nu stiu daca este materna la tine, am impresia ca esti turc, (troll stiu ca esti)
starea de somnolenta nu inseamna ca doarme, ci ca adoarme
iti spun inca odata, starile sunt ceva ce CERI, nu se setezi
apoi, undeva ar trebui sa ai o lista (ENUM) cu stari (UUID ), nu stringuri
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

Edited by Iulius-Foyas, 06 May 2019 - 22:57.


#36
OriginalCopy

OriginalCopy

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

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

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.

[...]

Deci in lumea reala [...]
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...

View PostMosotti, on 06 mai 2019 - 22:24, said:

Treburile nu-s batute in cuie, totul depinde de cerinte.
Cerintele si trollatul sunt ca uleiul si apa.

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