Gå til innhold

Kan noen sjekke om denne Java-koden er korrekt i forhold til oppgaven min?


Anbefalte innlegg

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
Videoannonse
Annonse

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
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 av blackbrrd
Lenke til kommentar
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 av Cx
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...