AS3 101: Quick Tips - Bruk Tilgang Modifikatorer Effektivt
Del
Del
Del
Del
Dette Cyber mandag Envato Tuts + kurs vil bli redusert til bare $ 3. Ikke gå glipp av
Dette innlegget er en del av en serie som heter AS3 101.AS3 101: Fem grunner til å bruke settere og GettersAS3 101. OOP Inheritance, Setters & Getters - Basix
Det er fire tilgangs modifikatorer du kan velge mellom når du erklærer egenskaper og metoder: privat, beskyttet, interne og offentlige. Hvordan vet du hvilken du vil bruke?
Før jeg svare på det spørsmålet, la oss vurdere hvorfor vi ville bry seg med privat (og beskyttet og intern) og ikke bare gjøre alt offentlig? Vel, det er en liten ting som kalles innkapsling faktisk gjør motoren mer offentlig Det er mer av en retningslinje enn en regel, men du bør gjøre egenskaper og metoder som utilgjengelig som mulig . Det er mye lettere å ombestemme deg senere og gi utvidet tilgang enn det er å gå den andre retningen. Tenk deg for eksempel en klasse som har en "foo ()" metoden. Hvis vi begynner å lage foo () offentlig, så noe annet objekt kan kalle det. Nå bestemmer vi at, uansett grunn, foo () bør bare kalles under kontrollerte omstendigheter, så vi ønsker å gjøre det privat. På det punktet med å endre "public" til "privat", det kan være en rekke andre gjenstander allerede kaller foo (), fordi det er offentlig. Når vi skal kunne bytte, risikerer vi å bryte eksisterende kode. På den annen side, antar at det var en "bar ()" metode som vi opprinnelig skrev som privat, og det eneste stedet hvor vi kan samtalen bar () er fra i objektet selv. Men vi har siden besluttet at bar () er virkelig hjertet og sjelen av dette objektet, og vi kan virkelig gjøre ting fantastisk ved å gjøre det offentlig. Som vi gjør endringen, vet vi at den eneste kode som tidligere kunne kalle bar () vil fortsatt kunne kalle Dette er sannsynligvis mer standhaftig enn den første, men igjen, det er ingen regelbok der ute, og det er heller en myndigheter som vil bust du skulle bryte disse "reglene". Men det er en god idé å alltid alltid alltid Hvorfor? I et nøtteskall, fordi du ikke vil ha noen annen bit av koden endre verdien av dine egenskaper uten at du vet om det. Dette er ikke noen paranoid, "Big Brother er alltid ser" tilnærming til programmering. Men det handler om kontroll. Dette er ikke å si at det aldri skal være offentlig tilgang til verdien. I stedet er det å si at vi bør kontroll Og i å bruke det: nå, hvis du har skjedd å skrive: Så staten er aldri matchet. Jada, kan du legge til en standard i bryteren uttalelse, og selv utføre en toUpperCase () på statlig eiendom når man skal vurdere det, men det ville være bedre å bare validere verdi som det blir stilt. Å skrive en offentlig setter for eiendommen gir deg muligheten til å undersøke den innkommende verdi og reagere deretter Selvfølgelig kan du håndtere det slik du vil, og det er skjønnheten av private eiendommer kombinert med offentlige settere og getters. Og, for å knytte tilbake til den første regelen, det er en "safe "forandring å ha en privat eiendom som du senere legger til offentlige settere og getters. Se min rask spiss på settere og getters for mer informasjon.
i objektorientert programmering. Tanken bak det er "black box" design av klasser. Du trenger ikke å vite hvordan boksen fungerer for det å gjøre jobben sin. Ta en bil, for eksempel. Du trenger ikke å vite det første om hvordan en motor fungerer for deg å sitte i førersetet og gjør bilen til å kjøre. Den interne driften av bilen er innkapslet, og alt du trenger å være kjent med er hva kan du gjøre fra utsiden (for eksempel arbeid med pedalene og slå hjul, hvem bryr seg om hvor hjulene slår når du treffer gassen, bare så lenge de gjør)
kan føre til problemer?.; hvis noen som ikke egentlig vet hva de gjør starter får rundt, kan vi ha en ødelagt bil på våre hender. Med det i tankene, la oss vurdere ...
Den første regelen
det etter endringen.
The Other Rule
gjøre private eiendommer, eller på det meste beskyttet. Aldri gjøre en offentlig eiendom.
offentlig tilgang til verdien. Tenk over dette: hva om objektet hadde en streng eiendom som holdt en av tre mulige verdier, og objektet oppførte seg litt forskjellig avhengig av staten som eiendom? For eksempel:
offentlig Var tilstand: String; offentlig funksjon foo (): void {switch (stat) {case "A": trace ( "foo - en"); gå i stykker; case "B": trace ( "foo - b"); gå i stykker; case "C": trace ( "foo - c"); gå i stykker; }}
myObject.state = "A"; myObject.foo () //spor "foo - en"; myObject.state = "B"; myObject.foo () //spor "foo - b";
myObject.state = "a"; myObject.foo () //ingenting skjer
privat Var _state. String; offentlig funksjon satt tilstand (verdi: String): void {if (value == "A" || verdi == "B" || verdi == "C") {_state == verdi; } Else {kaste nytt Feil ( "Ugyldig verdi angitt for staten:" + verdi); }}