NevroMance Skrevet 11. februar 2009 Del Skrevet 11. februar 2009 Og det er akkurat der vi er uenige. Personlig liker ikke jeg this. notasjonen og bruker m_ som prefiks for klassevariable. Om jeg bruker setName(String first, String last) eller setName(String firstname, String lastname) ser jeg på som akkurat det samme, da begge to er like forklarende. Det at first ikke er samme som firstname ser jeg på som helt likegyldig. Men denne argumentasjonen kommer det uansett ingenting ut av, da det å bruke this og m_ begge er forklarende. Eneste er at jeg må tenke mer når jeg leser kode hvor firstname heter firstname overalt. Sitter og lurer på: Er dette klassevariabelen firstname eller deklarerte han/fikk inn firstname som parameter ovenfor? Men igjen, det er bare meg. Lenke til kommentar
gather Skrevet 11. februar 2009 Del Skrevet 11. februar 2009 Vil det ikke være mer hensiktsmessig å bruke tilgangsmetodene til å sette verdier i konstruktørene slik at du har Public Player(String firstName, String lastName) { setFirstName(firstName); setLastName(lastName); setCredits(100); } Når du skal ha to paramertere som skal sendes inn til konstruktøren bør du kanskje tenke igjennom hva som skal skje hvis det ikke sendes inn noen. Du kan derfor ha en ikke parametrisk konstruktør slik som dette public Player() { this("Ukjent","Ukjent"); } Lenke til kommentar
blackbrrd Skrevet 11. februar 2009 Del Skrevet 11. februar 2009 (endret) Og det er akkurat der vi er uenige. Personlig liker ikke jeg this. notasjonen og bruker m_ som prefiks for klassevariable. Om jeg bruker setName(String first, String last) eller setName(String firstname, String lastname) ser jeg på som akkurat det samme, da begge to er like forklarende. Det at first ikke er samme som firstname ser jeg på som helt likegyldig. Men denne argumentasjonen kommer det uansett ingenting ut av, da det å bruke this og m_ begge er forklarende. Eneste er at jeg må tenke mer når jeg leser kode hvor firstname heter firstname overalt. Sitter og lurer på: Er dette klassevariabelen firstname eller deklarerte han/fikk inn firstname som parameter ovenfor? Men igjen, det er bare meg. Med m_ som prefiks må du vite om "standarden" for å vite at det er en klassevariabel det blir referert til Med this. foran variabelnavn trenger du bare å kunne java for å vite at det er en klassevariabel det blir referert til. Ser poenget ditt angående om firstname er klassevariabel eller in-parameter det er snakk om. På den andre siden, hvis du har flere forskjellige "navn" på firstname som du har så er det lett å bli forvirret over hva slags variabel dette faktisk er. Personlig ser jeg forskjell på klassevariabler og lokale variabler med fargekoding i editoren jeg bruker. Klassevariabler er lilla, lokale variabler er svarte. Med java-bean standarden for get/set metoder så blir det også litt funky. Disse skal hete get[variabelnavn med stor forbokstav] og set[variabelnavn med stor forbokstav]. Hvis du bruker m_firstname så blir disste metodene hetende getM_firstname og setM_lastname Endret 11. februar 2009 av blackbrrd Lenke til kommentar
Cx Skrevet 12. februar 2009 Del Skrevet 12. februar 2009 (endret) Vil det ikke være mer hensiktsmessig å bruke tilgangsmetodene til å sette verdier i konstruktørene slik at du har Public Player(String firstName, String lastName) { setFirstName(firstName); setLastName(lastName); setCredits(100); } Hvorfor vil du gjøre det slik? Er jo ingen grunn til å ikke bruke medlemsvariablene direkte? Endret 12. februar 2009 av Cx Lenke til kommentar
emva Skrevet 12. februar 2009 Del Skrevet 12. februar 2009 Noen ganger vil man ha regler på hva man kan sende med i konstruktøren, slik som det er nå kan man sende hva som helst. setCredits(penger) f.eks. kan det ligge logikk bak slik at den ikke godtar hva som helst -100 f.eks. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå