Dreamhacker Skrevet 16. april 2009 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?
___ Skrevet 16. april 2009 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
blackbrrd Skrevet 16. april 2009 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.
steingrim Skrevet 17. april 2009 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?
blackbrrd Skrevet 17. april 2009 Skrevet 17. april 2009 http://weblogs.asp.net/dwahlin/archive/200...properties.aspx
steingrim Skrevet 17. april 2009 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.
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å