Patronen :: undefobjecteen versie van het undefined object (null-object) patroon | |
Download nu |
Patronen :: undefobject Rangschikking & Samenvatting
Advertentie
- Vergunning:
- Perl Artistic License
- Prijs:
- FREE
- Naam uitgever:
- John Napiorkowski
- Uitgever website:
- http://search.cpan.org/~jjnapiork/
Patronen :: undefobject Tags
Patronen :: undefobject Beschrijving
Patterns :: undefobject is een versie van het undefined object (null-object) Pattern.Sometimes Wanneer u methoden op een object belt, kunt u niet zeker weten dat een bepaalde call-keten geldig zal zijn. Als u bijvoorbeeld zoiets gebruikt als DBIX :: KLASSE, zou u kunnen beginnen met het vinden als een bepaalde gebruiker in een database bestaat en vervolgens de relaties van die gebruiker voor een bepaald doel volgen: mijn $ Primary = $ schema -> FUTSET ('Gebruiker) ') -> Zoek (100) -> Telefoonnaam -> Primair; Maar deze call-keten zal hard sterven tijdens dynamische aanroep Moet de methode-oproep zoeken (100) falen om een gebruiker te vinden. Deze mislukte zou een waarde van undef en vervolgens een volgende "kan-methode" -telefonie -nummers "op een ongedefinieerde waarde kunnen retourneren. Dit leidt vaak tot het schrijven van veel verdedigingscode: mijn $ primaire; als (mijn $ gebruiker = $ schema > FUTSET ('User')) {$ PRIMALE = $ GEBRUIKER -> Telefoon_nummers -> Primary;} anders {$ primary = "Onbekend nummer";} Natuurlijk, om echt veilig te zijn, moet u defensieve code schrijven De weg naar beneden de ketting als de relaties niet nodig zijn. Ik geloof dat dit soort boilerplaat defensieve code tijdrovend en afleidend is voor de lezer. De breedheid van de breedte trekt de aandacht weg van het prime doel van de code. Bovendien voelt het als een Bit van een codeur voor goed object georiënteerd ontwerp. Patronen :: undefobject biedt een mogelijke benadering om dit probleem aan te pakken. Deze klasse definieerde een fabrieksmethode genaamd "Misschien" die een argument accepteert en dat argument weergeeft als het wordt gedefinieerd. Anders Retourneert een exemplaar van patronen :: undefobject, die autoloa definieert D Dat maakt niet uit welke methode wordt gebeld, het altijd retourneert. Hiermee kunt u een willekeurige lengte van methode-ketens van dat eerste object noemen zonder een uitzondering te veroorzaken om uw code te stoppen. Dit object overbelast Booleaanse context zodanig dat wanneer geëvalueerd als BOOL, het altijd false retourneert. Als u het op een andere manier probeert te evalueren, krijgt u een uitzondering. Hiermee kunt u het bovenstaande codemonster vervangen door: Gebruik patronen :: undefobject; Mijn $ primaire = patronen :: undefobject -> Misschien ($ schema-> resultaat ('gebruiker') -> Zoek (100)) -> BELEUW_NUMBERS -> Primary || 'Onbekend aantal'; u kunt de beschikbare export gebruiken misschien om dit een beetje beknopt te maken (vooral als u het meerdere keren moet gebruiken). Gebruik patronen :: undefobject 'misschien'; Mijn $ Primary = Misschien ($ schema-> resultaat ('gebruiker') -> Zoek (100)) -> Telefoon_Nummers -> Primary || 'Onbekend nummer'; persoonlijk vind ik dat dit patroon leidt tot een meer beknopte en leesbare code en het wordt ook dieper veroorzaakt om manieren die men vergelijkbare technieken kan gebruiken om bepaalde soorten presentatie logica te gebruiken. Synopsis Gebruik Patronen '; Mijn $ naam = Misschien ($ User_RS-> Find (100)) -> Naam || 'Onbekende gebruikersnaam'; Homepage van het product
Patronen :: undefobject Gerelateerde software
Probeer :: Tiny :: Smartcatch
Lichtgewicht Perl-module voor krachtige uitzonderingenbehandeling ...
61