Dreamhacker Skrevet 16. april 2009 Del Skrevet 16. april 2009 Jeg har lært at man alltid skal opprette get/set metoder istedenfor å lage public fields (men dette virker jo bare unødvendig i mange tilfeller?), og at de skal kalles get<variabel navn> / set<variable navn>. Men, jeg har lagt merke til at flere klasser i Java API bruker samme metode navn for get/set, men bare ikke overloader/overloader (f.eks Buffer, kaller du på limit() så returnerer den, kaller du på limit(29) så setter den limit). For meg så virker det mye enklere og oversiktelig. Er det noen grunn til å ikke navngi slik? Lenke til kommentar
___ Skrevet 16. april 2009 Del Skrevet 16. april 2009 (endret) Jeg har lært at man alltid skal opprette get/set metoder istedenfor å lage public fields (men dette virker jo bare unødvendig i mange tilfeller?), og at de skal kalles get<variabel navn> / set<variable navn>. Men, jeg har lagt merke til at flere klasser i Java API bruker samme metode navn for get/set, men bare ikke overloader/overloader (f.eks Buffer, kaller du på limit() så returnerer den, kaller du på limit(29) så setter den limit). For meg så virker det mye enklere og oversiktelig. Er det noen grunn til å ikke navngi slik? Uten å svare på spørsmålet ditt, så kan jeg jo si følgende: Grunnen er vel det som på godt norsk kalles for encapsulation, det vil si at brukerne av en klasse ikke skal behøve å vite noe om hvordan ting fungerer på "innsiden", bare hvordan klassen brukes. Vel, det er i allefall mye av tankegangen bak. Hvis brukerne av klassen din kun kan kommunisere med instanser av den, via gettere og settere, kan du forandre ganske mye på "innsiden" av klassen din uten at brukerne trenger å gjøre noe som helst annet enn å bytte ut .class-filen. Unnlater du konsekvent å bruke gettere og settere fordi du synes det er ekstra pes, så mister du mye av denne fleksibiliteten. Men dette vet du vel fra før av. Men for å SVARE på spørsmålet ditt: Det er jo ofte man får behov for å gjøre andre ting i setXXX-metoder, enn bare å gi variabelen xXX verdi. Werner Endret 16. april 2009 av wernie Lenke til kommentar
blackbrrd Skrevet 16. april 2009 Del Skrevet 16. april 2009 C# har løst "problemet" med unødvendige get/set metoder ved å kalle metodene automatisk hvis de finnes. myObject.name = "test"; blir gjort om til myObject.setName("test"); hvis metoden setName(String) finnes. Lenke til kommentar
steingrim Skrevet 17. april 2009 Del Skrevet 17. april 2009 C# har løst "problemet" med unødvendige get/set metoder ved å kalle metodene automatisk hvis de finnes. Jøsses, det visste jeg ikke. Har du referanse til dette? Lenke til kommentar
blackbrrd Skrevet 17. april 2009 Del Skrevet 17. april 2009 http://weblogs.asp.net/dwahlin/archive/200...properties.aspx Lenke til kommentar
steingrim Skrevet 17. april 2009 Del Skrevet 17. april 2009 Nja. Properties er ikke det samme som "automatisk kalle de hvis de finnes" Det kan kanskje tilsynelatende virke sånn på overflaten, eller det kommer kanskje an på hva du mener med automatisk. 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å