Een vraagje... ik heb een class waarin ik data kan opslaan en deze class kan ik locken zodat er geen data meer aan kan worden toegevoegd.
Nu had ik dus in die class een is_locked() method gemaakt, zodat ik kan zien of een object gelockt is.
Echter, nu zit ik daar nog even over na te denken en nu vraag ik me af of die is_locked() method wel nodig is? Want, zo besef ik me ineens, het zou raar zijn om eerst te kijken of het object gelockt is, en zo nee om dan pas gegevens toe te voegen. Blijkbaar wil je gegevens toevoegen en mag het object op dat moment simpelweg niet op slot zitten. Dus hoef je dit ook niet te testen!
Zijn jullie het eens met mijn gedachte dat het dus onzin is om een is_locked() method te hebben?
Ah oké.. ik gebruik een universele class waar dat al in zit en daar is het zeker geen onzin. Maar voor de verdere discussie is dat een irrelevant detail.
Het is een class om data vast te houden. Het kan bijv. POST data zijn, of COOKIE data, maar ook configuratie data, of data afkomstig van een externe partij. Sommige frameworks noemen het ook wel een parameter bag. Het voordeel is dat je niet voor alles een niewe class hoeft te maken, maar gewoon één universele class gebruikt.
Dat zou kunnen, maar daar zie ik zelf wel nadelen aan. Ik zou dan rechtstreeks vanuit de constructor setten, en niet met aparte setters werken. En, het kan ook zo zijn dat ik op meerdere plekken iets wil toevoegen en de class daarna pas wil locken. Dat gaat in deze opzet niet.
Je zou het bijvoorbeeld ook met de setters zelf kunnen regelen, een van de andere alternatieven. Laat de setters alleen parameters accepteren die nog niet in de locked paramater bag voorkomen. Komt een parameter wel voor, dan wordt die geweigerd of genegeerd. De verantwoordelijkheid over de juistheid van de parameters plaats je bij validators buiten de parameter bag, zodat je parameter bag uitsluitend bruikbare data bevat.
Maar ik snap niet echt wat je bedoelt Ward. Ik heb gewoon een object met setters en getters. op het moment dat je het object locket, dan kun je geen gegevens meer wijzigen/toevoegen/verwijderen. Doe je dat wel, dan volgt een exception. Dat is toch een prima oplossing? Of zie ik iets over het hoofd?