Knutsi Skrevet 21. august 2008 Del Skrevet 21. august 2008 Heisann! Jeg er relativt ny hva Java angår, men har endel programmeringserfaring. Lurer på en liten stilmessig sak: Bruker man vanligvis this for å referere til private variabler i klasser, eller ungår man dette? Jeg pleier å bruke varNavn_ for å understreke at de er interne, og synes ofte this.varName_ blir noe rotetet. Hva er normalt innen profesjonel bruk? Finnes det en standard på dette? Mvh, - Knut Lenke til kommentar
dabear Skrevet 21. august 2008 Del Skrevet 21. august 2008 (endret) Først litt historie fra andre språk: I Python er self (som det kalles) eksplisitt og MÅ brukes og legges ved som første parameter i metoden. I php brukes $this->varnavn for å referere til objektvariabler. I javascript brukes this for å referere til det globale objektet, som enten er nettleservinduet eller objektet. I java derimot, antas det at du skal sette objektvariabler dersom du ikke bruker this-variabelen og det i tillegg ikke eksisterer en lokal variabel med samme navn. Så med andre ord, du trenger bare this.variabelnavn i tilfeller som dette: public class Test{ private int someVal; private double someOtherVal; public void doSomething(int someVal, double otherValue) { //her trenger du ikke this. fordi du har ingen lokale variabler //kalt someOtherVal someOtherValue = otherValue; //her må du brukes this, for ellers setter du en lokal variabel this.someVal = someVal; } } Noen liker å kalle variabler i en metode for feks startSomeVal for å unngå denne problematikken, noen velger å legge på en underscore (int someVal_), mens andre liker å bruke this-konsekvent. Jeg er for den siste, ved å bruke this eksplisitt, men dette har jeg en følelse av at mange i javaverdenen ugleser. Det har kanskje noe med min Python-bakgrunn å gjøre edit: må bare påpeke at this kan peke til både public, private og protected objektvariabler Endret 21. august 2008 av dabear Lenke til kommentar
___ Skrevet 21. august 2008 Del Skrevet 21. august 2008 (endret) Heisann! Jeg er relativt ny hva Java angår, men har endel programmeringserfaring. Lurer på en liten stilmessig sak: Bruker man vanligvis this for å referere til private variabler i klasser, eller ungår man dette? Jeg pleier å bruke varNavn_ for å understreke at de er interne, og synes ofte this.varName_ blir noe rotetet. Hva er normalt innen profesjonel bruk? Finnes det en standard på dette? Mvh, - Knut Noen ganger må man bruke this, for eksempel når instansvariabler og parametervariabler har det samme navnet: public class Test { private int foo; public Test(int foo) { this.foo = foo; } } Jeg kan ikke huske å ha sett bruken av this nevnt i noen kodestandard. Jeg synes at bruken av this er opp til den enkeltes smak og behag. Personlig bruker jeg det alltid. Noen vil sikkert synes det er rotete... Ellers burde det ikke være noen grunn til å postfixe variabelnavn med underscore, for å understreke at de er interne. I tråd med god OOP-skikk er variabler et internt anliggende i klasser, og ikke noe som noe på utsiden burde aksessere. Edit: Doh! Mens jeg satt og skrev dette har noen sneket seg til å komme med et briljant svar allerede. Werner Endret 21. august 2008 av wernie Lenke til kommentar
blackbrrd Skrevet 24. august 2008 Del Skrevet 24. august 2008 Jeg foreslår at du tar en titt på kildekoden til f.eks String og Vector klassen i java, så ser du hvordan Sun mener det skal gjøres. Lenke til kommentar
Frank2004 Skrevet 25. august 2008 Del Skrevet 25. august 2008 (endret) Heisann! Jeg er relativt ny hva Java angår, men har endel programmeringserfaring. Lurer på en liten stilmessig sak: Bruker man vanligvis this for å referere til private variabler i klasser, eller ungår man dette? Jeg pleier å bruke varNavn_ for å understreke at de er interne, og synes ofte this.varName_ blir noe rotetet. Hva er normalt innen profesjonel bruk? Finnes det en standard på dette? Mvh, - Knut Ja, det finnes en standard. Se Code Conventions for the JavaTM Programming Language. Endret 25. august 2008 av Frank2004 Lenke til kommentar
Mads-b Skrevet 3. september 2008 Del Skrevet 3. september 2008 Frank2004: Leste standarden, den nevner ikke hvordan man kaller variabler i klassen.. Jeg for min del fortsetter standarden min fra PHP. this.var for alle variabler i klassen, så unngår man misforståelser, og mulige mess-ups den dagen man kaller en ny variabel det samme som en som allerede fins (selv om jeg synes det er en ganske dårlig vane fra før). Lenke til kommentar
pgdx Skrevet 4. september 2008 Del Skrevet 4. september 2008 this.var for alle variabler i klassenStygt og hemmer lesbarhetenså unngår man misforståelserNei, man blir blind for this.og mulige mess-ups den dagen man kaller en ny variabel det samme som en som allerede finsI Java vil du få en advarsel når du prøver å redeklarere den, med mindre det er i en ny metode du lager, men da skriver du jo hele koden fra begynnelsen, og da teller ikke hvor vidt du har brukt this eller ikke tidligere. Uansett, for å øke lesbarheten, unngå misforståelser og mess-ups, følg konvensjonene. Av alle de Java-klassene jeg har sett fra Sun, Google og Apache har ikke this. vært brukt eksplisitt med mindre det er absolutt nødvendig. Dessuten er bug som er forårsaket av dette ganske lett å finne, og desto lettere å fikse. Lenke til kommentar
dabear Skrevet 4. september 2008 Del Skrevet 4. september 2008 Jeg er enig i at å følge Konvensjonen er The Right Thing to Do, men at this. er stygt, hemmer lesbarheten, er jeg likevel uenig i. Jeg greier faktisk ikke se hvorfor å være eksplisitt minker lesbarheten. Lenke til kommentar
pgdx Skrevet 4. september 2008 Del Skrevet 4. september 2008 at this. er stygt, hemmer lesbarheten, er jeg likevel uenig i. Jeg greier faktisk ikke se hvorfor å være eksplisitt minker lesbarheten.Det er kanskje bare en vanesak, men når man skriver mye kode blir man fort lei av at 50% av koden faktisk er gjentakende "this.". I tillegg blir man selvsagt lei av å skrive this. hver gang man skal referere til en feltvariabel, slik at man vurderer å ha det på utklippstavlen og trykke Ctrl-v hver gang man skal referere til en slik. Og hvis man bruker Ctrl-v ofte bør man revurdere kodestilen sin. Jeg vet ikke hvor mye kode folk her inne skriver, men etter noen tusen linjer blir man nok lei. Jeg skjønner ærlig talt ikke problemet heller, kan noen gi meg et eksempel på en metode som tar inn så mange parametre som kræsjer med feltvariabler at det er noe problem? Det ofteste er jo vanlige settere, og da er det temmelig åpenbart når man bruker this (pluss at kompilatoren klager hvis man gjør noe feil). Lenke til kommentar
Frank2004 Skrevet 4. september 2008 Del Skrevet 4. september 2008 Frank2004: Leste standarden, den nevner ikke hvordan man kaller variabler i klassen.. Trådstarter hadde åpenbart ikke hørt om standarden i det hele tatt, med tanke på hvordan han/hun strør rundt seg med underscores. Og hvis du leser standarden nøye nok, så kan du ihvertfall finne et eksempel på kode som refererer til instansvariabler. Denne er selvsagt uten "this", som kun brukes når det er nødvendig. PS: hvis det er uklart hva som er lokale- og hva som er instansvariabler, så er det kanskje på tide å skrive om koden sin litt..? Lenke til kommentar
pgdx Skrevet 4. september 2008 Del Skrevet 4. september 2008 PS: hvis det er uklart hva som er lokale- og hva som er instansvariabler, så er det kanskje på tide å skrive om koden sin litt..?+1 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å