[oop] controlestructuur

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Als Front-end developer werken aan apps voor het o

Functie Als Front-end developer werk je intensief samen met 1 van de UX-designers en denk je mee over de gebruiksvriendelijkheid en design van onze web- en mobile apps. Je bent betrokken bij sessies met gebruikers om designs te valideren en usability van de app-in-wording te testen. Vervolgens gebruik je dit om samen met je team waarin ook back-end (.NET) developers zitten, te zorgen voor de realisatie van de best mogelijke apps voor studenten en docenten. Eisen • Je hebt een hands-on development en coding mind-set en werkt graag aan een high quality code base welke je consequent onderhouden kan worden

Bekijk vacature »

Senior pega developer

You work on software that makes colleagues and customers happy! Thanks to your IT skills, De Mandemakers Groep really makes a difference for its customers. Do coding, testing and deployments make your heart beat faster? Then apply today as Senior Pega Developer at De Mandemakers Groep! Wat ga je doen? The job title gives it away: You will be developing Pega software. This ranges from technical design, coding and testing to test automation, deployments and bug fixing. Your goal is to continuously improve our systems so that colleagues can work efficiently and customers receive optimal service. You don't have to

Bekijk vacature »

Belastingdienst - Freelance Senior Applicatie ontw

Startdatum: 01.06.2023 Richttarief: €65,00 - €75,00 Duur van de opdracht: 6 maanden Uren per week: 36 Taal: Nederlands vereist! Gelieve in het Nederlands te solliciteren. Functieomschrijving: We verwachten van je, dat je: Brede ervaring hebt als JAVA-ontwikkelaar; Ervaring hebt met Agile/Scrum-werken en je thuis voelt in een Agile omgeving; Een aandeel levert aan het scrumproces en in de SAFe-releasetrain; Zelfstandig werkt in een scrumteam en intensief de samenwerking op zoekt met je directe collega’s en je omgeving; Ervaring meebrengt met het schattten en inplannen van taken tot en met het testen en demonstreren van de opgeleverde functionaliteit; Collega’s in je

Bekijk vacature »

Software developer

Werkzaamheden voor jou als software developer Voor een goede relatie in de regio Zwolle (meerdere locaties) zoeken wij een software developer die betrokken is bij de ontwikkelcyclus en verantwoordelijk is voor het testen en keuren van nieuwe en geoptimaliseerde software. In deze functie ben je in de implementatiefase de persoon die risico's beoordeelt en intern oplossingen aanbrengt om risico's te verkleinen. Binnen het ontwikkelteam van de software ben je een belangrijke schakel waar je intensief meewerkt met scrum. Het voorkomen van bugs in de programma's en het bevorderen van gebruiksvriendelijkheid voor eindklanten zijn voor jou een uitdaging en geeft voldoening

Bekijk vacature »

Medior/Senior Software Developers gezocht in de Ra

Functie Op dit moment staan er posities open voor de volgende functies: Front-end, Back-End & Fullstack software developer. Als Front-End software developer werk je met JavaScript en de bijbehorende technologieën zoals TypeScript, Angular, React, Vue en Svelte. Als Back-End software developer ben je bezig in NodeJS en doe je dit met behulp van AWS, NoSQL, REST en GraphQL. Je krijgt leuke en uitdagende opdrachten met een gemiddelde duur van anderhalf jaar. Hier werk je in een team met andere IT’ers aan het ontwikkelen en verbeteren van software. Je wordt begeleid door een accountmanager die fungeert als jouw aanspreekpunt. Het team

Bekijk vacature »

Software Developer

Dit ga je doen Je bent verantwoordelijk voor de warehouse applicatie die een integratie heeft met de PLC laag; Je ontwikkelt in C#/.Net; Je werkt mee aan de migratie naar .NET 6; Je bent verantwoordelijk voor het ontwikkelen van interfaces en het visualiseren van componenten; Je denkt mee over het design voor business oplossingen; Je bent verantwoordelijk voor het testen van de gebouwde oplossing. Hier ga je werken Voor een internationale organisatie in de transport zijn wij momenteel op zoek naar een Software Developer. Zij zijn wereldwijd de grootste speler en lopen voorop met het automatiseren van alle processen van

Bekijk vacature »

Front-end Developer

Dit ga je doen Je komt in een DevOps-cultuur te werken waarbij je met je team werkt aan de front-end van diverse brand websites; Het ontwerpen van functionele en grafische ontwerpen die worden geïmplementeerd; Draagt zorg voor het maken van analyses; Je werkt nauw met je collega’s samen en geeft elkaar feedback en suggesties waar nodig; Het uitwerken van vraagstukken die afkomstig zijn van verschillende klanten; Hier ga je werken Deze marktleider op gebied van fietsen en fietservaring is gevestigd in twee provincies, verspreid over meerdere locaties. Jij zult voornamelijk in regio Joure aan de slag gaan. De organisatie doelt

Bekijk vacature »

Software Developer .NET

Functie omschrijving .NET developer gezocht! Wij zoek op zoek naar een .NET Developer die zich niet uit het veld laat slaan voor een software bedrijf in de regio Veenendaal. Je gaat in deze functie aan de slag met het door ontwikkelen van bestaande producten en het ontwikkelen van nieuwe producten. Dit bedrijf ontwikkeld SaaS applicaties die zowel intern als extern gebruikt worden. Verder bestaat je functie uit: Het ontwikkelen en bouwen van webapplicatie, mobiele applicaties en websites vallen onder jouw verantwoordelijkheden; Werken met onder andere .NET, C#, HTML/CSS, Javascript en MSSQL/Oracle Databases; Hierin werk je samen met andere developers en

Bekijk vacature »

IoT Software Developer PHP

Functie omschrijving Voor een klein softwarebedrijf in Breda, zijn wij op zoek naar een IoT software developer met kennis van PHP. In deze rol wordt je verantwoordelijk voor het vernieuwen van het multimedia platform van een super tof bedrijf in Breda. Je gebruikt PHP als programmeerlaag, en bent in staat om de helicopterview te pakken / projectmatig te werken. Jouw werkzaamheden zien er als volgt uit: Je gaat aan de slag met de ontwikkeling en vernieuwing van het "intern" ontwikkelde multimedia platform. Je neemt de lead in het moderniseren van het platform door het deels opnieuw op te zetten of

Bekijk vacature »

Front-end Developer - Juniorfunctie

Functie omschrijving Ben jij op zoek naar een uitdagende baan als front-end developer, in een informele werksfeer, waar jij echt het verschil kan maken? Wil jij graag werken voor een bedrijf dat sportiviteit en een open communicatie, hoog in het vaandel heeft staan? Dan hebben wij de perfecte vacature voor je! Voor een klein bedrijf in Rijen dat gespecialiseerd is in het omzetten van digitale woningtekeningen naar managementinformatie, zijn wij per direct op zoek naar een allround front-end developer. Jouw werkzaamheden zien er als volgt uit: Ja gaat nauw samenwerken met de back-end developer. De database structuur is volledig gebouwd

Bekijk vacature »

Software developer (Python)

Functie Je komt te werken in het IT-team bestaande uit de Lead developer en 4 (medior/senior) developers. Gezamenlijk werken jullie aan de verbetering en uitbreiding van de software. Binnen het development team is er veel vrijheid en zelfstandigheid, zonder dat ze hiermee afdoen aan de kwaliteit. Zo hebben ze elke ochtend een korte stand-up (10:00 uur) en houden ze zo nu en dan pair-programming sessies. Ook is er een hele professionele ontwikkelcyclus waarbij code altijd eerst door een collega wordt getest voordat het naar deployement gaat. Je hebt in je werk oog voor kwaliteit, risico’s en het klantbelang. Communicatie met

Bekijk vacature »

Full stack ontwikkelaar Laravel, Vue.js

Functie Als ontwikkelaar binnen deze organisatie hou jij je voornamelijk met lopende projecten voor de verschillende klanten. Zo bouw je de ene dag aan prijsschifting systemen en de andere dag onderzoek je crawlers en stel je ze zo in dat de data goed binnen komt binnen het systeem. Daarnaast bouw je mee aan dashboards en ben je dus constant bezig met het verbeteren van het platform. Er is een vaste werkwijze, zo werken ze met Trello kaarten en onderverdelen ze deze aan het begin van iedere week onder de developers. Dit wordt door de lead developer gedaan, maar in samenspraak

Bekijk vacature »

Full stack Python developer

Functie Samen met andere collega’s (een product owner, een software manager en een ervaren ontwikkelaar) ga jij onze producten verder ontwikkelen. Jouw verantwoordelijkheden zullen bestaan uit: – Verder wil gaan met de ontwikkeling van onze bestaande producten; nieuwe features! – Meedenkt over de roadmap van onze producten – Als sparringpartner kan optreden op het gebied van development – Zelf ook nieuwe ideeën op tafel durft te leggen en deze van scratch af aan wilt bouwen Hieronder ook een paar voorbeelden van projecten waar we momenteel mee bezig zijn of binnenkort aan willen beginnen: – Real-time interactie creëren in onze web

Bekijk vacature »

Software Developer

Longship.io gaat de wereld veroveren met baanbrekende software en legendarische... pizza-avonden! Lees hier de vacature van IT Operations Manager! Bij Longship werken we met een team van 5 mensen aan software voor laadpaal operators. Longship is ontstaan in 2020 met als doel om de elektrische mobiliteitstransitie aan te jagen. We zijn nu al een wereldwijde speler doordat we continu voorop lopen in innovatie. Ons platform helpt het versneld elektrificeren van wagenparken, internationaal! Wij zijn een startup met grote ambities die we willen bereiken met een relatief klein en efficiënt team. Je krijg de kans om ontzettend veel te leren van

Bekijk vacature »

Developer

Functie omschrijving In deze functie ga je werken als C# Developer. Jij gaat aan de slag met de volgende taken: Maatwerk software bouwen; Huidige softwareprojecten verder uitbouwen en optimaliseren; Ideeën van de klant omzetten naar handige oplossingen en tools; Bovenstaande doe je middels de Microsoft- stack: C#, ASP.NET en MVC/ Entity Framework. Ben je net afgestudeerd aan een HBO opleiding Informatica, aarzel dan niet om te solliciteren. Dit is namelijk de ideale startersfunctie! Bedrijfsprofiel Deze organisatie is gevestigd in de regio van Boxtel. Het is van oorsprong een familiebedrijf, die gestart zijn met het bouwen van websites. Dit is door

Bekijk vacature »

Pagina: 1 2 volgende »

Ozzie PHP

Ozzie PHP

05/05/2014 17:37:08
Quote Anchor link
Ola,

Ik heb een vraagje... ik heb een class waarin ik de naam van een constante kan ophalen. Nu had ik in 1e instantie een method waarbij telkens 2 controles plaatsvinden, en daar heb ik nu een method van gemaakt met een extra overkoepelende controle. Dit laatste heb ik gedaan om, indien de method meer dan 1x wordt aangeroepen, geen dubbele controles te hoeven uitvoeren. Ik ben benieuwd welke versie jullie beter vinden en waarom. Hieronder even 2 voorbeeldjes van hoe het ongeveer werkt.

Voorbeeld 1:

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
<?php
class Language {

    const DUTCH = 1;

    static private $languages_values;

    static public function getConstName($value) {
        if (!isset(self::$languages_values)) { // controle 1
            $ref_class              = new \ReflectionClass(self::class);
            self::$languages_values = array_flip($ref_class->getConstants());
        }

        if (!isset(self::$languages_values[$value])) { // controle 2
            thow new \Exception('de value bestaat niet!');
        }

        return self::$languages_values[$value];
    }

}

?>

In de opzet hierboven wordt telkens als je getConstName() aanroept eerst gecontroleerd of de property languages_values wel is geset, en daarna wordt gecontroleerd of de value in die array voorkomt.

Nu heb ik er dit van gemaakt:

Voorbeeld 2:

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
22
<?php
class Language {

    const DUTCH = 1;

    static private $languages_values;

    static public function getConstName($value) {
        if (!isset(self::$languages_values[$value])) { // extra controle
            if (!isset(self::$languages_values)) {
                $ref_class              = new \ReflectionClass(self::class);
                self::$languages_values = array_flip($ref_class->getConstants());
            }

            if (!isset(self::$languages_values[$value])) {
                thow new \Exception('de value bestaat niet!');
            }
        }

        return self::$languages_values[$value];
    }

}

?>

Ik heb er dus een extra if-statement omheen gezet, die direct al kijkt of de value bestaat. Wat vinden jullie van deze aanpak?
Gewijzigd op 05/05/2014 17:44:23 door Ozzie PHP
 
PHP hulp

PHP hulp

25/04/2024 21:20:55
 
Dos Moonen

Dos Moonen

05/05/2014 18:10:46
Quote Anchor link
Dit ziet er netter en begrijpelijker uit naar mijn idee:

http://3v4l.org/Bl4TO
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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php

namespace Ozzie;

use Exception;
use ReflectionClass;

class Language {

    const DUTCH = 1;

    private static $languages_values;

    public static function getConstName($value) {
        if (isset(self::$languages_values[$value])) {
            return self::$languages_values[$value];
        }


        throw new Exception('de value bestaat niet!');
    }


    public static function init() {
        static $initialized = false;

        if ( ! $initialized) {
            $ref_class              = new ReflectionClass(self::class);
            self::$languages_values = array_flip($ref_class->getConstants());

            $initialized = true;
        }
    }

}


// ja, dit zet je in het zelfde bestand
Language::init();

// nee, dit dan weer niet niet
echo Language::getConstName(1), Language::getConstName(42);

// phphulp only:
?>
Gewijzigd op 05/05/2014 18:31:51 door Dos Moonen
 
Ozzie PHP

Ozzie PHP

05/05/2014 19:17:54
Quote Anchor link
Dos, dan moet je dus telkens voordat je getConstNamn uitovert een init() uitvoeren?

Ik snap de init functie niet helemaal. Eerst zet je $initialized op false, en vervolgens controleer je of ie niet false is?
 
Dos Moonen

Dos Moonen

05/05/2014 19:24:00
Quote Anchor link
"Dos, dan moet je dus telkens voordat je getConstNamn uitovert een init() uitvoeren?"
Nee, maar een keer. En dan doe je in het bestand waar je de Language classe defineerd. Op die manier is Language::init() altijd uitgevoerd op het moment dat je Language::getConstName() wilt gebruiken.

"Eerst zet je $initialized op false, en vervolgens controleer je of ie niet false is?"
Ik zet initialized op false en kijk dan of ie niet true is.

http://www.phphulp.nl/php/forum/topic/name-id-description/94779/#680318 mocht je static $initialized niet snappen.
Gewijzigd op 05/05/2014 19:26:47 door Dos Moonen
 
Ozzie PHP

Ozzie PHP

05/05/2014 19:27:32
Quote Anchor link
Ik snap die static... maar je zet 'm nu toch iedere keer op false?

Toevoeging op 05/05/2014 19:28:19:

>> En dan doe je in het bestand waar je de Language classe defineerd.

Wat bedoel je hiermee? Ik definieer niks, want ik gebruik een autoloader :-s
 
Dos Moonen

Dos Moonen

05/05/2014 19:36:02
Quote Anchor link
...

Ik heb het niet over het gebruik van \define()...

Ik heb het over
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?

class foo {
  // dit is een class definition
}

// zet dit in het zelfde bestand, op die manier is het altijd uitgevoegd wanneer foo beschikbaar is
foo::init();

?>


"Ik snap die static... maar je zet 'm nu toch iedere keer op false?"
Als dat zo was zou deze code 42 keer '1' moeten printen: http://3v4l.org/13gHJ
Gewijzigd op 05/05/2014 19:37:21 door Dos Moonen
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

05/05/2014 19:37:43
Quote Anchor link
Maar we zijn weer lekker bezig.

Je gaat eerst constanten met een waarde definiëren, en daarna ga je de naam van de constante opvragen aan de hand van die waarde.

Jij bent zo van de real-time voorbeelden:
Ik heb een motor met een bepaald soort klep, ik ga eerst de motor uit elkaar halen om de naam van die zuigerklep te achterhalen.

In jouw voorbeeld met Language, moet je elke keer als je een taal wilt toevoegen je class aanpassen.
Als dat OOP is, ben ik Attila de Hun.
 
Ozzie PHP

Ozzie PHP

05/05/2014 19:46:20
Quote Anchor link
@Dos:

>> // zet dit in het zelfde bestand, op die manier is het altijd uitgevoegd wanneer foo beschikbaar is

Ah, op die fiets! Dat is inderdaad een goede truc!!! :)

* EDIT: kan dit ook bij een abstract class?

>> Als dat zo was zou deze code 42 keer '1' moeten printen

Oké... dan snap ik dus niet hoe die static werkt blijkbaar. Waarom verandert die niet van waarde? :-s

@Atilla de Hun:

>> In jouw voorbeeld met Language, moet je elke keer als je een taal wilt toevoegen je class aanpassen.

Kun je uitleggen wat je hiermee bedoelt? Hoezo moet ik m'n class aanpassen?
Gewijzigd op 05/05/2014 19:48:08 door Ozzie PHP
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

05/05/2014 19:55:25
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php

class Language {

const DUTCH = 1;
const WARTAAL = 0;

}

?>

Nu willen we English erbij, dan gaat jouw methode niet werken, want die gooit een Exception.
Gewijzigd op 05/05/2014 19:56:05 door Ger van Steenderen
 
Ozzie PHP

Ozzie PHP

05/05/2014 19:58:01
Quote Anchor link
Correct. Dan zal je die moeten toevoegen. Maar dat moet je toch altijd? Of wil jij iedere language kunnen setten ofzo? Dus dat je dit kunt doen? $language->set('DUTCH', 1) Bedoel je dat? Leg anders even uit hoe het volgens jou wél zou moeten. Daar ben ik wel benieuwd naar.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

05/05/2014 20:05:04
Quote Anchor link
Ik denk dat je het begrip constante verkeerd interpreteert.

Gegevens die dynamisch (kunnen) zijn sla je niet in de class zelf op, maar in een gegevensbestand.
 
Ozzie PHP

Ozzie PHP

05/05/2014 20:15:16
Quote Anchor link
Maar ik wil dus "value objecten" (noem je dat zo?) gebruiken, waardoor ik dus zoiets kan doen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$user
= new User();
$user->setName('Ger');
$user->setGender(gender::MALE);
$user->setLanguage(language::DUTCH);
?>

Dat kan toch niet anders? Dan heb je toch constanten nodig?
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

05/05/2014 20:38:02
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<input type="select" name="language">
<option value="1">Nederlands</option>
<option value="0">Wartaal</option>
</select>

Dus jij gaat eerst je object aanspreken om die value's te presenteren, en daarna ga je nog eens een methode ontwikkelen om de bijbehorende inhoud weer te geven?

In principe ben je als je gegevens binnen een applicatie opslaat hard aan het coderen, en dat kan nooit je bedoeling zijn.
 
Ozzie PHP

Ozzie PHP

05/05/2014 20:43:03
Quote Anchor link
Maar Ger, is dat dat niet gewoon een andere manier van werken? Jij suggereert nu dat wat ik doe fout is. Ik zie echter het probleem (nog?) niet. Misschien kun je me dat dan uitleggen.

Ik vind dit:

$user->setGender(gender::FEMALE);

prettiger lezen en te begrijpen dan

$user->setGender(2);

Wat is daar dan precies verkeerd aan?
 
Wouter J

Wouter J

05/05/2014 20:43:55
Quote Anchor link
Wat jij nu hebt is geen value objecten, in value objecten:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$user
= User::hire('Ger', Gender::parse('male'), new Language('Dutch'));
?>
 
Ozzie PHP

Ozzie PHP

05/05/2014 20:54:18
Quote Anchor link
Hoe noem je de constructie die ik nu gebruik dan?
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

05/05/2014 20:56:59
Quote Anchor link
Laten we de vraag eens andersom stellen.
Wat is voor jouw het voordeel om van een iemands geslacht een object te maken?

En met alle respect voor alle ISO normen men is (of denkt) man of vrouw.

Maar je gebruikt constanten in het algemeen om een bijv. een nummer een bepaalde betekenis te geven, en niet om zomaar een hoop gegevens te genereren die je ergens anders vandaan weer moet gaan ophalen.,
 
Ozzie PHP

Ozzie PHP

05/05/2014 21:06:02
Quote Anchor link
Nou, ISO normen implementeren waar mogelijk lijkt me niet verkeerd. Daarbij is het voordeel dat als je een geslacht opslaat als 2 het minder ruimte in beslag neemt dan wanneer je het opslaat als "female". Net zoals 'de' minder ruimte in beslag neemt dan 'germany'. Die korte values besparen dus ruimte. Dat is toch een goede reden?

Kijken we dan verder... dan vind ik het handiger om te zeggen setColor(color::red) of setLanguage(language::french), dan bijv. setColor(2) en setLanguage('fre') om maar wat te noemen.

Wat is daar dan verkeerd aan? Het is toch gewoon een werkwijze die je zelf prettig vindt?
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

05/05/2014 21:11:25
Quote Anchor link
Als jij het prettig vind om als elke keer dat er een NIEUWE taal aan je website toegevoegd wordt je code aan te gaan passen ...........
 
Ozzie PHP

Ozzie PHP

05/05/2014 21:17:44
Quote Anchor link
Ja, maar gaat het je er nu om of het wel of niet "fijn" is, of doe ik ook daadwerkelijk iets verkeerd? Als die landen bijv. uit een configuratie-bestand zouden komen, is het dan wel oké?
 
Dos Moonen

Dos Moonen

05/05/2014 21:22:07
Quote Anchor link
"Maar ik wil dus "value objecten" (noem je dat zo?)"
Nee. En dat voorbeeld heeft absoluut geen value OBJECTEN.
Je hebt geen object dat het mannelijk geslacht of de Nederlandse taal voorsteld.

Je wilt alleen objecten kunnen hebben die een valide waarde vertegenwoordigen.
Je zult de waarde dus moeten valideren aan de hand van bijvoorbeeld
- hardcoded waardes (gebruik dan aub constanten, magic numbers are evil)
- geconfigureerde waardes
- magie (dit is gelukkig onmogelijk)

Op die manier kun je dan een public function setGender(Gender $gender) hebben en weten dat $gender altijd valide is.

Constanten zijn handig om magic numbers (http://en.wikipedia.org/wiki/Magic_number_%28programming%29) te voorkomen. Wat jij nu doet is magic numbers wegwerken door ze als constanten met een beschrijvende naam te defineren. Dit is een goed iets.
Maar via reflection de naam van de constante (die per conventie alleen uit hoofdletters bestaan) op te gaan zoeken i.p.v. een helper method schrijven die op basis van bijvoorbeeld een switch een tekst versie produceert is niet echt mooi.
De tekst versie van een waarde hoort naar mijn idee niet af te hangen van de variabele/constante naam die naar de waarde verwijst.

Ik weet niet of jouw constructie een naam heeft...
Gewijzigd op 05/05/2014 21:24:15 door Dos Moonen
 

Pagina: 1 2 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.