Patronen :: undefobject

een versie van het undefined object (null-object) patroon
Download nu

Patronen :: undefobject Rangschikking & Samenvatting

Advertentie

  • Rating:
  • 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