dicht timmeren?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Back-end developer (Magento2)

Functie E-commerce is een ‘’snelle’’ wereld. Om hierin continu voorop te blijven omarmen ze in een vroeg stadium nieuwe technieken. Een webshop is nooit af en kan altijd beter, sneller en efficiënter. Tegelijkertijd hebben ze vanaf hun oprichting altijd vastgehouden aan kwaliteit boven snelheid, en dit loont. Als back-end developer fungeer je als het verlengstuk van hun klanten. Technisch complexe zaken pak je met liefde op, en hierin werk je samen met o.a. front-end developers en designers. Klanten verwacht hierin kwaliteit van het hoogste niveau en een proactieve, meedenkende rol bij het maken van zowel technische als strategische keuzes. Ga

Bekijk vacature »

Senior developer (PHP en VB.NET)

Functie De development afdeling bestaat uit 2 teams. Het productteam (10 developers) is verantwoordelijk voor verschillende applicaties met als doel om zoveel mogelijk te automatiseren en uit te werken tot standaard software. Met diverse Solutions Architecten en ervaren developers denken ze voortdurend mee met hun klanten en bouwen ze de basis van het uiteindelijke maatwerk dat wordt geleverd. Hiernaast hebben ze een maatwerk/projectteam. Dit team bestaat momenteel uit 8 developers (junior tot senior) en is verantwoordelijk voor het maatwerk in hun klantprojecten. Momenteel zijn ze op zoek naar een senior developer die aan de slag gaat in het productteam. Hierin

Bekijk vacature »

Medior Java developer

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Python developer Consultancy

Functie Als Python developer bij deze organisatie werk je voor verschillende klanten. Doordat de oprichter een groot netwerk heeft kun je zelf voorkeuren uitspreken in het type projecten dat je wilt gaan doen. Zo zijn er bijvoorbeeld langdurige of juist korte projecten, maar is ook het type klant, of project bespreekbaar. Werk jij bijvoorbeeld graag aan een nieuw, state-of-the-art web portaal of ben je liever betrokken bij een migratietraject van een bestaande applicatie? Wij gaan voor jou aan de slag! Eisen • Je bent een gedreven developer met sterke voorkeur voor Python • Je bent meer dan een codeklopper •

Bekijk vacature »

.NET developer

Functie Als .NET ontwikkelaar start jij in een multidisciplinair team met 7 ontwikkelaars. Dit team is verdeeld onder Front-end ontwikkelaars en backend developers. De backend developers werken voornamelijk aan desktop applicaties in combinatie met backend systemen. Hier ga jij dus ook mee aan de slag! Hierbij wordt voornamelijk gebruik gemaakt van C# .NET, WPF, UWP, XAML en MVVM. WPF, UWP, .NET Core, Azure Devops en Entity Framework. WPF en UWP worden dan ook voornamelijk gebruikt voor de user interface van de desktop applicatie. Het development team is dan ook erg gedreven m.b.t. het ontwikkelen van vooruitstrevende en innovatieve horeca automatiseringsoplossingen.

Bekijk vacature »

Fullstack Software Developer

Bedrijfsomschrijving Functieomschrijving Java ontwerpen, bouwen en testen (T-shaped). Als senior ontwikkelaar ben je bekend in zowel de back-end als de frontend van een applicatie. Angular, Continious Delivery / Integration. Een ervaren iemand die de leiding kan nemen, een weg vindt in nieuwe situaties, en in oude applicaties. Initiatiefrijk, bekend met de (technische) omgevingen die we bij duo gebruiken, niet te beroerd om collega’s te helpen. Als senior programmeur in staat om op te treden als lead programmeur. Ondersteunt de testers bij de testautomatisering en minder ervaren programmeurs bij dagelijks werkzaamheden. Dit laatste met name op het gebied van Angular. Achtergrond

Bekijk vacature »

Ambitieuze medior developer

Wat je gaat doen: Heb jij al een paar jaar ervaring als developer maar wil jij naar the next level? In ons NextLevelDev Programma helpen wij jou om de volgende stap te zetten: een mooi programma aan trainingen op het gebied van Java, hippe frameworks, Agile/Scrum, OCP-certificering en optioneel: andere JVM-talen als Kotlin en Scala; Cloud (AWS, Azure, GCP) Soc Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun

Bekijk vacature »

Ventilatiesysteem Productontwikkelaar HBO WO Verwa

Samengevat: Zij bieden flexibele ventilatiematerialen, geluidsdempers, rookgasafvoer producten en industrieslangen. Ben jij een technisch productontwikkelaar? Heb jij ervaring met het ontwikkelen van nieuwe producten? Vaste baan: Technisch Productontwikkelaar HBO WO €3.000 - €4.000 Zij bieden een variëteit aan flexibele ventilatiematerialen, geluiddempers, rookgasafvoer producten, industrieslangen en ventilatieslangen voor de scheepsbouw. Met slimme en innovatieve materialen zorgen wij voor een gezonde en frisse leefomgeving. Deze werkgever is een organisatie die volop in ontwikkeling is met hardwerkende collega's. Dit geeft goede ontwikkelingsmogelijkheden. De branche van dit bedrijf is Techniek en Engineering. Functie: Voor de vacature als Technisch Productontwikkelaar Ede Gld HBO WO ga

Bekijk vacature »

Back-end developer

Functieomschrijving Voor een gewaardeerde werkgever in regio Tilburg zijn wij op zoek naar een gemotiveerde SQL Developer/ functioneel consultant. Jij wordt verantwoordelijk voor zowel het ontwerpen en implementeren van SQL-databases als voor het in kaart brengen van de bedrijfsprocessen van een organisatie en het vertalen van deze processen naar IT-oplossingen. Jouw takenpakket komt als volgt uit te zien: Ontwerp en implementatie van SQL-databases: Je ontwerpt, ontwikkelt en implementeert SQL-databases om de data behoeften van de organisatie te ondersteunen; Analyse van bedrijfsprocessen: Je analyseert de bedrijfsprocessen van de organisatie om de behoeften van de klant te begrijpen en te vertalen naar

Bekijk vacature »

Software Ontwikkelaar C# .NET

Functie omschrijving C# .NET Developer gezocht. Ben jij een full stack developer die op zoek is naar een nieuwe uitdaging binnen een leuk snel groeiend bedrijf? Lees dan snel verder! Wij zijn op zoek naar een Developer met ervaring op het gebied van .NET die een organisatie in de regio Amersfoort gaat versterken. Jij gaat je binnen dit bedrijf vooral bezighouden met het verbeteren van de functionaliteiten van hun dataplatform. Samen met andere ontwikkelaars denk je mee in oplossingsrichtingen, architectuur en nieuwe technologieën. Bedrijfsprofiel De organisatie waar je voor gaat werken heeft een onafhankelijk dataplatform ontwikkelt voor de agrarische sector.

Bekijk vacature »

Fullstack Software Developer

Functieomschrijving Voor een ambitieuze werkgever in regio Roosendaal zijn wij op zoek naar een Full Stack C#.NET Developer. Als software programmeur ben je verantwoordelijk voor het bouwen van webapplicaties, apps en dashboards voor de eigen IOT-oplossingen. Je werkt samen met andere developers en engineers om de sensoren in machines uit te lezen en deze data om te zetten in management informatie voor jullie klanten. Taken en verantwoordelijkheden: Verder ontwikkelen en onderhouden van webapplicaties, dashboards en apps voor de eigen IOT-oplossingen; Testen en goedkeuren van de software; Je gaat aan de slag met de volgende technologieën en frameworks: C#, JS frameworks,

Bekijk vacature »

Android developer

De functie Schiphol is een plek om te reizen, te verblijven en te werken. Door middel van data en technologie richten we op al deze gebieden het leef- en werkklimaat optimaal in en zorgen we voor een slimmere en efficiëntere operatie. Wij ontwikkelen nieuwe producten en diensten vanuit de wensen en behoeften van onze klanten, voorspellen passagier flows en testen digitale oplossingen om rijen en andere pijnpunten in het proces te verminderen. Met slimme feedback van sensortechnologie maken we zelfs data van toiletten en stoelen inzichtelijk en bruikbaar. Het Commercial Platform bestaat uit multidisciplinaire teams met een end-2-end verantwoordelijkheid voor

Bekijk vacature »

Junior Software Developer (HBO / WO)

Functie omschrijving Voor een leuke opdrachtgever zijn wij op zoek naar een Junior Software Developer! Sta jij aan het begin van je carrière en heb je net je HBO of WO-diploma in de richting van ICT of Techniek mogen ontvangen? En heb jij grote affiniteit met software development? Dan hebben wij bij Jelling IT Professionals de perfecte opdrachtgever in de omgeving van Hoofddorp. Binnen deze functie vervul je een onsite learning programma waarbij je aan de slag gaat met PHP en Laravel. Hierbij ben je voornamelijk werkzaam op verschillende klantlocaties en is het jouw taak om hun wensen en eisen

Bekijk vacature »

C# .NET Developer

Functie omschrijving Wij zijn op zoek naar een C# .NET Developer voor een leuke opdrachtgever in de omgeving van Hilversum! Voor een leuk bedrijf in de omgeving van Hilversum zijn wij op zoek naar een Back-end developer die klaar is voor een nieuwe uitdaging. Ben jij iemand die graag aan verschillende projecten werkt en het ook leuk vindt om bij klanten op bezoek te gaan? Dan ben jij de perfecte kandidaat! Deze functie is erg divers, je moet dus goed kunnen schakelen. Je komt te werken in een klein team van developers. Binnen het bedrijf hangt er een gemoedelijke informele

Bekijk vacature »

C#.NET ontwikkelaar

Functieomschrijving Voor een gewaardeerde werkgever in regio Tilburg zijn wij op zoek naar een C#.NET ontwikkelaar. Je bent verantwoordelijk voor het ontwikkelen van dashboards, webapplicaties en apps voor de eigen IOT-oplossingen. Samen met een vooruitstrevend team van ontwikkelaars en engineers krijgen jullie de opdracht om de sensoren in de apparatuur te scannen en vervolgens de data om te zetten in belangrijke inzichten voor de klanten. Taken en verantwoordelijkheden: Heb jij ideeën over nieuwe technieken die jullie kunnen implementeren? Hier wordt echt naar je geluisterd en gekeken of jouw idee daadwerkelijk ingezet kan worden; Je gaat aan de slag met de

Bekijk vacature »

Pagina: « vorige 1 2 3 4 5 volgende »

Ozzie PHP

Ozzie PHP

20/03/2012 21:14:32
Quote Anchor link
Inmiddels weer even verder en wat wijzer. Ik heb besloten om als ik een key ophaal NIET te controleren of die key bestaat, maar direct de value terug te geven. Als de key niet bestaat.. dan heeft de programmeur een fout gemaakt. Weet je niet of een key bestaat, dan gebruik je de exists functie. Zo voorkom ik dus allerlei dubbele controles.

Enige twijfelpuntje is of ik i nm'n exists functie de combinatie van isset en array_key_exists moet gebruiken. Dit doe ik nu wel. Dit levert voordeel op als de key via isset wordt gevonden (deze functie is zeer snel), maar een nadeel als de key niet geset is... iemand advies daarin?
 
PHP hulp

PHP hulp

10/05/2024 10:06:32
 
Niels K

Niels K

22/03/2012 09:52:46
Quote Anchor link
Hoi Ozzie,

Dit is dus één van de situaties waar je het juist wel moet doen.

Oplossing: Maak een functie, exists en controleer in de get / set functie of een key daadwerkelijk bestaat.

Je kan je register ArrayObject laten extenden. Dan kan je met offsetExists controleren of hij daadwerkelijk bestaat.

Snap je?

Niels
 
Ozzie PHP

Ozzie PHP

22/03/2012 09:59:33
Quote Anchor link
Hoi Niels,

Nee, dat snap ik niet.

Ik heb het nu als volgt... waarbij ik meld dat deze situatie niet alleen voorkomt bij de registry maar ook bij m'n session class en configuration class.

Ik heb dus een functie get, die geeft direct de waarde terug (zonder te controleren of die bestaat). Het is dus de verantwoordelijkheid van de programmeur om ervoor te zorgen dat wanneer hij iets "get" hij zeker weet dat het eerder al ge"set" is. Als hij dat niet zeker weet, dan zet hij om de get een exists functie, als volgt:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if (Registry::exists('geenideeofditgesetis')) {
  $data = Registry::get('geenideeofditgesetis');
}

?>


Ik vind dit eigenlijk wel een mooie manier. Zo kan er niks mis gaan.
 
Niels K

Niels K

22/03/2012 10:07:20
Quote Anchor link
Hoi Ozzie,

Ik vind dit geen mooie manier. Als je iets niet zeker weet kost het altijd drie regels code. Of je moet de ternary operator methode gebruiken.

Ik zou het als volgt doen: (als je ArrayObject extends)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php

public static function get($index) {
    $instance = self::getInstance();

    if (false === $instance->offsetExists($index)) {
        throw new Registry_Exception('No entry is registered fory key ...'); // blablabla
    }

    return $instance->offsetGet($index);
}


?>


Niels
Gewijzigd op 22/03/2012 10:07:30 door Niels K
 
Ozzie PHP

Ozzie PHP

22/03/2012 10:31:57
Quote Anchor link
Hoi Niels,

Dat zou op zich wel kunnen, en zo had ik het eerst ook.

ECHTER... nu komt het :)

Ik heb er eens goed over nagedacht. Op jouw (en voorheen ook mijn) manier voer je ten eerste meer controles uit dan wanneer je het resultaat direct teruggeeft.

Ten tweede, stel een user moet inloggen en bij een geslaagde inlogpoging wordt het userobject in de registry geplaatst. Nu haal ik op een andere pagina de user op, maar deze is niet aanwezig in de registry omdat de inlogpoging niet geslaagd is. BOEM, er wordt een exception gegooid! Niet handig, want ik wil in dit geval gewoon een nette melding tonen dat de gebruiker eerst moet inloggen! Hoe lossen we dat op? Toch maar een exists functie eromheen bouwen en pas daarna de user ophalen. Nog meer controles!

Ik leg dus de verantwoordelijkheid nu bij de programmeur neer. Dat is iets minder gebruiksvriendelijk voor de programmeur, maar wel beter voor de performance.

Maar allemaal leuk en aardig dat geneuzel over wat goed en niet goed is. Laat ik het eens vergelijken met een real-life voorbeeld.

Ik ga iedere ochtend douchen, ontbijten en dan met de auto naar m'n werk. Ik ga er iedere ochtend vanuit dat ik brood en beleg heb (dat heb ik immers gekocht) en dat mijn auto aanwezig is op de plek waar ik 'm de avond van tevoren heb neergezet. Mijn proces ziet er in code als volgt uit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$ik
->douchen();
$brood_beleg = Registry::get('brood_beleg');
$ik->eten($brood_beleg);
$auto = Registry::get('auto');
$ik->vroem($auto);
?>


Op jouw manier ziet het proces er als volgt uit, waarbij ik de controle in de get functie even heb vertaald in een boolean controle. Dit is even met een hele dikke knipoog en het gaat niet om de exacte invulling. Het gaat vooral om de algemene gedachte erachter. Mijn manier is, vind ik, efficiënter en meer to the point. Jouw manier kent een betere foutafhandeling, maar weegt dat zwaarder op tegen de extra controles... in ieder geval leuk om daar je gedachten eens over te laten gaan. Jouw manier:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
$niels
->douchen();
$boolean = isErBroodBeleg();
if ($boolean) {
  $brood_beleg = Registry::get('brood_beleg');
}
else {
  die('Whhaaaahhh... mn brood is op!!');
}

if ($brood_beleg) {
  $niels->eten($brood_beleg);
}

$boolean = staatMnAutoOpDeJuistePlek();
if ($boolean) {
  $auto = Registry::get('auto');
}
else {
  die('Helluuuup mn auto is gejat!!');
}

if ($auto) {
  $niels->vroem($auto);
}

?>
Gewijzigd op 22/03/2012 10:34:26 door Ozzie PHP
 
Niels K

Niels K

22/03/2012 16:00:36
Quote Anchor link
Hoi Ozzie,

Zoals beloofd een reactie ;-)

Quote:
Ik heb er eens goed over nagedacht. Op jouw (en voorheen ook mijn) manier voer je ten eerste meer controles uit dan wanneer je het resultaat direct teruggeeft.


Dat maakt in mijn ogen in dit geval niet uit. Dit is gewoon noodzakelijk.

Quote:
Ten tweede, stel een user moet inloggen en bij een geslaagde inlogpoging wordt het userobject in de registry geplaatst. Nu haal ik op een andere pagina de user op, maar deze is niet aanwezig in de registry omdat de inlogpoging niet geslaagd is. BOEM, er wordt een exception gegooid! Niet handig, want ik wil in dit geval gewoon een nette melding tonen dat de gebruiker eerst moet inloggen! Hoe lossen we dat op? Toch maar een exists functie eromheen bouwen en pas daarna de user ophalen. Nog meer controles!


Dat is een foute denkwijze best Ozzie. Ik ben van mening dat je een user niet in het register moet stoppen. Die moet het sessie object onthouden.

Per functie moet je controleren of een user daadwerkelijk ingelogd is. Niet of hij in de storage zit.

Bijv:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php

if (Auth::getInstance()->hasIdentity()) {
    // Er is dus iemand ingelogd.
}

?>


Snap je? Je moet leren de verantwoordelijkheden te abstraheren. Een Register heeft niets te maken met het feit of een gebruiker daadwerkelijk ingelogd is nietwaar? Een register moet zich druk maken om het feit dat hij / zij dingen moet opslaan en weer moet retourneren. Wat hij precies opslaat, retourneert? Tzal hem een worst zijn!

;-)
 
Ozzie PHP

Ozzie PHP

22/03/2012 16:05:48
Quote Anchor link
Niels, thanks voor je reactie ;)

Dat van die user was een voorbeeld. Ik zal m'n voorbeeld aanpassen.

Stel ik wil een user opslaan in de registry, maar dit doe ik pas als die user is ingelogd...

Ergens anders wil ik die user weer uit de registry halen. Ik controleer of de user is ingelogd. Ik weet dat als hij is ingelogd er een user object in de registry aanwezig is, dus dan haal ik dat direct uit de registry. Ik hoef dan niet eerst nog te controleren of het aanwezig is.

Snap je? Mijn stelling is dus dat op het moment dat ik iets uit de registry ophaal ik ervan overtuigd moet zijn dat datgene ook in de registry aanwezig is. Indien ik dat niet zeker weet, dan pas gebruik ik de exists functie.
 
Niels K

Niels K

22/03/2012 16:08:10
Quote Anchor link
Hoi Ozzie,

Geef mij eens een situatie waarin dit soort dingen voorkomen? Ik kan zo snel geen (goede) situatie bedenken.

Ik heb het bovenstaande nog niet meegemaakt eigenlijk. Terwijl ik toch de manier gebruik die ik hierboven heb omschreven.

Niels
 
Ozzie PHP

Ozzie PHP

22/03/2012 16:12:59
Quote Anchor link
Voorbeeld: in mijn "bootstrap" (of hoe je dat ook noemt) plaats in een configuratie-object met instellingen in de registry.

Als ik nu iets nodig heb uit de configuratie doe ik simpelweg:
$value = Registry::get('config')->my_value;

Dit is puur even een voorbeeldje he. Aangezien ik weet dat de config altijd aanweig is in de registry is het niet nodig om eerst een controle uit te voeren. Dat is eigenlijk wat ik bedoel te zeggen.

Pas op het moment dat ik niet zeker ben of een waarde aanwezig is in de registry pas dan bouw ik een extra controle in:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if (Registry::exists('misschienbestaatdit')) {
  $value = Registry::get('misschienbestaatdit');
}

?>


Snap je?
 
Niels K

Niels K

22/03/2012 16:16:48
Quote Anchor link
Ja in snap volkomen wat jij bedoeld.

Jij retourneert nu het configuratie object en aan het configuratie object vraag je nu die 'my_value'. Het register hoeft hier dus niets van af te weten. In de __get van het configuratie object moet je afvangen of die value daadwerkelijk bestaat. (ik neem overigens aan dat je de key bedoeld ;-))

Zoals ik al zei kan ik geen situatie bedenken waarin ik niet weet of een object daadwerkelijk in het register zit.

Snap je ? ;-)

Niels
 
Ozzie PHP

Ozzie PHP

22/03/2012 16:20:29
Quote Anchor link
"Jij retourneert nu het configuratie object en aan het configuratie object vraag je nu die 'my_value'. Het register hoeft hier dus niets van af te weten."

CORRECT

"In de __get van het configuratie object moet je afvangen of die value daadwerkelijk bestaat. (ik neem overigens aan dat je de key bedoeld ;-))"

Maar dat afvangen doe ik dus niet omdat ik weet dat de waarde die ok opvraag bestaat.

"Zoals ik al zei kan ik geen situatie bedenken waarin ik niet weet of een object daadwerkelijk in het register zit."

CORRECT, in de praktijk zal dit ook niet vaak voorkomen, dus.... daarom heb ik geen controle in de get functie :)))))

Snap je?
 
Niels K

Niels K

22/03/2012 16:36:23
Quote Anchor link
Quote:
Maar dat afvangen doe ik dus niet omdat ik weet dat de waarde die ok opvraag bestaat.

In het configuratie object zou ik daar iets voorzichtiger mee zijn. Dit omdat je in de loop van het project ook nog configuratie kan aanmaken. (of je moet er voor zorgen dat dit niet kan)

In het register is dat dan inderdaad niet nodig, your right ;-) Ik heb even naar Zend Framework gekeken, maar daar zie ik wel dat het register mijn bovenstaande manier toepast. (iets anders, maar komt op hetzelfde neer)

This en blijft een persoonlijke keuze ;-)
 
Ozzie PHP

Ozzie PHP

22/03/2012 16:39:38
Quote Anchor link
Hehe, oke... de praktijk zal leren of het de juiste keuze is. Nadeel is dat ik goed moet opletten. Voordeel is dat het me heel veel onoodige controles scheelt :)
 
Ozzie PHP

Ozzie PHP

29/03/2012 16:55:03
Quote Anchor link
Hallo mensen, in navolging van een opmerking van Pim (klik) vraag ik me af in hoeverre je classes moet "dicht timmeren".

Ik heb een paar classes (bijv. de Application / bootstrap class en een Autoloader class) waarin ik een statische variabele set nadat ze 1x geconstruct zijn. Als je ze daarna nog een keer probeert te constructen wordt er een exception gegooid. Ik heb dit gedaan om te voorkomen dat iemand zo'n class ooit per ongeluk zal gaan gebruiken... want zoals je wel zult begrijpen gebruik je een bootstrap class in je project maar 1x en kun je een bootstrap niet meerdere keren gebruiken. Echter, het "dicht timmeren" van zo'n class zodat je deze niet dubbel kan gebruiken zorgt voor extra code en de code wordt er ook niet echt niet netter op. Maar goed, het voorkomt dus wel dat iemand een class dubbel gebruikt als dat niet mag.

Wat vinden jullie hiervan? Goed of niet?

(Aub geen opmerkingen over singletons, want daar gaat mijn vraag niet over. Het gaat mij er puur om of je een programmeur of jezelf moet beschermen tegen het mogelijk dubbel gebruiken van een class die daar niet voor bedoeld is.)
 
Ozzie PHP

Ozzie PHP

30/03/2012 17:58:42
Quote Anchor link
Is er iemand die mijn bovenstaande vraag durft te beantwoorden? Ik heb hier een klein voorbeeldje (van de construct functie) dat aangeeft hoe ik er voor zorg dat de Application class slechts eenmaal gebruikt kan worden:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
public function __construct() {
  if (self::$_application_started) {
    // gooi een Exception, toon een melding dat de Application class
    // slechts eenmaal gebruikt kan worden

  }
  self::$_application_started = true;
}

?>
 
Mark PHP

Mark PHP

30/03/2012 18:17:51
Quote Anchor link
__construct en __clone private maken, en via een statische methode getInstance o.i.d. toegang verlenen.

Toch even een opmerking, voor als iemand dit topic ooit eens doorleest:
Ik meen me te herinneren dat al eens gezegd is dat je eigenlijk nooit een klasse hebt die maar één keer gebruikt *mag* worden. Probeer dit soort programmeertrucjes dan ook te vermijden.
Gewijzigd op 30/03/2012 18:19:13 door Mark PHP
 
Ozzie PHP

Ozzie PHP

30/03/2012 19:29:53
Quote Anchor link
Mark, dankjewel voor je reactie. In dit geval gaat het om een class waarvan ik niet wil dat ie meerdere keren gebruikt wordt. De application class is een bootstrap die een aantal functies doorloopt en aan het eind van de rit wordt dan de pagina getoond. Natuurlijk kan ik de getInstance methode gebruiken, maar ik wil dus uberhaupt niet dat na de eerte keer functies in die class worden uitgevoerd. Met getInstance kun je die functies nog steeds gewoon gebruiken.

Maar de vraag is dus of via trucjes ervoor moet gaan zorgen dat die class maar 1x gebruikt kan worden... of moet je dat aan een programmeur overlaten en hopen dat die snugger genoeg is om die class niet nog een keer te gebruiken?
 
Mark PHP

Mark PHP

30/03/2012 20:23:36
Quote Anchor link
Wat dan nog? Probeer niet jouw denkwijze op te dringen aan andere programmeurs. Dus: als de programmeur per-se twee klassen wil maken, moet 'ie dat lekker doen. Zolang je documentatie goed is, is er niets aan de hand. En werk je in een team, dan heb je zoiets als een Software Design Specification, waarin precies staat hoe er gewerkt workt.

Tot slot: gebruik NOOIT trucjes als je programeert.
 
Ozzie PHP

Ozzie PHP

30/03/2012 20:28:24
Quote Anchor link
"Probeer niet jouw denkwijze op te dringen aan andere programmeurs."

Dit is dus min of meer mijn vraag... in hoeverre moet je middels code voorkomen dat een programmeur verkeerde dingen doet?

Liever gooi ik ook al die controles eruit, want dat vind ik een stuk netter staan, maar het gaat mij vooral om de gedachte erachter:

"Moet ik als ik aan het programmeren ben dingen doen om te voorkomen dat een andere programmeur (of ikzelf) in de toekomst bepaalde dingen fout kan doen?"

Of moet je daar gewoon helemaal niet over nadenken en die verantwoordelijkheid volledig aan de programmeur laten?

Toevoeging op 30/03/2012 20:30:59:

Ander voorbeeld:

Stel een programmeur moet ergens als parameter een url prefix invullen, maar ik wil niet dat die prefix begint of eindigt met een slash.

Nu kan ik dit bij de functieomschrijving aangeven, maar in sommige gevallen controleer ik dus ook of de invoer correct is en gooi ik een exception als dit niet het geval is.

Ik doe dit vooral met dingen die makkelijk fout kunnen gaan, maar is zoiets nu wel of niet goed om te doen... ik vind het lastig...
 
Ozzie PHP

Ozzie PHP

05/04/2012 20:18:47
Quote Anchor link
Ola allemaal. Ik zit te denken om mijn extra controles er toch maar uit te slopen en duidelijke instructies in het commentaar bij een functie te geven.

Stel een pad mag niet eindigen op een slash, dan staat dit in het commentaar bij de functie-omschrijving. Echter, ik controleer het vervolgens ook nog eens via regex. Ik zit er nu dus aan te denken om die regex controle achterwege te laten.

Goed idee?
 

Pagina: « vorige 1 2 3 4 5 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.