[oop] constructor als "uitvoerder"?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Fullstack Java Developer

Functieomschrijving Met jouw expertise zorg je als fullstack java developer voor de meest plezierige en efficiënte klant ervaring. Met jouw state-of-the-art-systemen verbeter je onze business en maak je echt impact! Want als je in ons tech team werkt, houd je jezelf en Nederland in beweging. Wij zijn continu bezig onze business en processen te optimaliseren, zodat we onze klanten en kandidaten meer gemak, snelheid en transparantie kunnen bieden. Impactvolle tech, daar doen we het voor. wat ga je doen? Samen met het team ontwikkelen van user stories op de backlog; Begeleiden van (meer junior) collega’s; Samenwerken met andere online teams;

Bekijk vacature »

.NET Developer

Bedrijfsomschrijving De organisatie is werkzaam in de financiële dienstverlening met meer dan 200 medewerkers en meer dan 250.000 eindgebruikers is het een van de grotere binnen haar branche. Je komt te werken in een team waarmee je verantwoordelijk bent voor het ontwikkelen en onderhouden van de financiële applicaties binnen de organisatie, denk hierbij aan het bouwen en onderhouden van portalen. Als .net developer ga jij het development team ondersteunen met de transitie naar de Cloud. Het development team richt zich voornamelijk op stevige back-end vraagstukken. Hierbij zal jij je veel richten op het koppelen van het oude landschap met de

Bekijk vacature »

IAM developer

Functieomschrijving IAM, voor jou hoeven we dat niet te vertalen toch? Want jij weet exact waar wij het over hebben bij het benoemen van Identity Access Management. Ben je toe aan een informele, mensgerichte omgeving met vrijheid, ondernemerschap, creativiteit en focus op innovatie? Dat zijn wij! En laten wij nou op zoek zijn naar jou, een IAM developer die ons team helpt Randstad naar een veilige toekomst te helpen. Als IAM developer bij ons ben jij samen met de overige teamleden aanspreekpunt binnen de organisatie ten behoeve van functionele en technische vragen omtrent Identity & Access Management. Samen met andere

Bekijk vacature »

IT-traineeship Low Code Developer

Vind jij het leuk om veel contact te hebben met een klant en je te verdiepen in een domein? Lijkt het je interessant om enerzijds met de klant mee te denken, maar tegelijkertijd ook zelf een bijdrage te leveren aan de implementatie van een IT oplossing? Wij zijn op zoek naar starters die aan de slag willen als low-code engineer. In deze functie bouw je aan applicaties met behulp van een low-code platform, zoals Outsystems, Blueriq, Mendix of Pega. Dergelijke platformen stellen je in staat om snel een werkende applicatie te ontwikkelen en zijn hierdoor heel geschikt voor maatwerk projecten.

Bekijk vacature »

Medewerker ICT / helpdeskmedewerker

Politiebond zoekt medewerker ICT / helpdeskmedewerker (0,57 fte) De Nederlandse Politiebond zoekt per direct een medewerker ICT / helpdeskmedewerker voor 20 uur per week (0,57 fte) die onze mooie organisatie wil komen versterken. De NPBis een vakbond voor personeel van de Nationale Politie. Namens ruim 27.000 leden zijn wij dagelijks in de weer om bij de werkgever betere arbeidsvoorwaarden te bedingen. Daarnaast hebben we een eigen juristen- en advocatenteam, dat dag in dag uit rechtshulp biedt aan leden die in problemen (dreigen te) komen op het gebied van bijvoorbeeld werk en inkomen, letselschade en strafrechtelijke vervolging. Iets dat elke politieambtenaar

Bekijk vacature »

Platform & Device Developer

You will work on many dynamic projects as a Platform & Device Developer, in which you can express your creativity. How do I become a Platform & Device Developer at Coolblue? As Platform & Device Developer, you are responsible for building and developing the platforms on which all Coolblue employees work. You are inquisitive and never shy away from a challenge. You like to know why certain systems or processes have been developed the way they have and conduct some research to improve them. You talk to different stakeholders and developers to see if your new solution works. In this

Bekijk vacature »

IT-traineeship Low Code Developer

Vind jij het leuk om veel contact te hebben met een klant en je te verdiepen in een domein? Lijkt het je interessant om enerzijds met de klant mee te denken, maar tegelijkertijd ook zelf een bijdrage te leveren aan de implementatie van een IT oplossing? Wij zijn op zoek naar starters die aan de slag willen als low-code engineer. In deze functie bouw je aan applicaties met behulp van een low-code platform, zoals Outsystems, Blueriq, Mendix of Pega. Dergelijke platformen stellen je in staat om snel een werkende applicatie te ontwikkelen en zijn hierdoor heel geschikt voor maatwerk projecten.

Bekijk vacature »

Angular Developer

Bedrijfsomschrijving De organisatie is een grote speler in de financiële branche met ongeveer 4500 medewerkers waarvan 450 IT-medewerkers. De organisatie staat continue in beweging en wil zich altijd blijven vernieuwen. Een belangrijk aspect voor deze organisatie is dat de klant altijd centraal staat. Binnen de afdeling waar je komt te werken wordt gezocht naar een ervaren Angular Developer. De afdeling bestaat uit twee scrum teams waarbij er altijd vanuit een DevOps manier wordt gewerkt, "You build it, you run it". De afdeling is verantwoordelijk voor het verder ontwikkelen van de webapplicatie en het beheer daarvan. Daarnaast is het team is

Bekijk vacature »

.NET Developer C# Web-development

Bedrijfsomschrijving Onze klant levert kwaliteitsdienst binnen zijn sector, het niveau van de Nederlandse sector is internationaal bekend! De organisatie richt zich op het waarborgen van deze kwaliteit en voorziet een groot aantal klanten in het MKB van jaarlijkse keuringen. Je komt te werken binnen een team van ongeveer 10 medewerkers waarbij de focus ligt op de doorontwikkeling en het implementeren van oplossingen in het applicatielandschap. Binnen deze organisatie werken ze met diverse Scrum/Agile teams, het is dan ook belangrijk dat je ervaring hebt met deze werkwijze en het leuk vindt om op deze manier te werk te gaan. Het betreft

Bekijk vacature »

Python UI developer using Django framework

Python UI developer using Django framework hello energy, Rotterdam Python UI developer using Django framework Ready for the next step in your development career? Want to work for an impact-driven scale-up? Come join our development team as a Python UI Developer! Leading real estate companies use hello energy to collect sustainability data and connect & engage all stakeholders on their road to net zero carbon. Full-time · Rotterdam, the Netherlands hello energy hello energy is the leading SaaS scale-up that helps make real estate sustainable. We do so by collecting all kinds of data, connecting people, and changing people’s behavior

Bekijk vacature »

Back-End Developer PHP

Back-End Developer PHP7 (Laravel) We search for our client with an energetic, young and fast growing team a new pearl in Back End Dev to join their team in the centre of Amsterdam! The company is based on the newest technology, is funded by top-tier investors, delivers on an ambitious roadmap, and is supported by a talented team. We search for a full-time Back-End Developer to join our team in Amsterdam. We are looking for a pro-active, software developer with experience building large scale SaaS applications. You'll work autonomously, will ship multiple features a week, help determine the roadmap and

Bekijk vacature »

.NET developer

Wil jij samen met gemotiveerde en slimme collega’s bouwen aan ons geavanceerde landschap in Azure? En vind je het ook nog eens leuk om jouw kennis te delen met junior- en medior devs? Dan heb je wellicht interesse in de positie van: Senior fullstack .NET developer voor ons kantoor in Alkmaar Over de positie: Bij SnelStart werken we in een AGILE-structuur om de productie meer focus en impact te geven. Met je collega’s kom je tot de beste resultaten door onderlinge discussie, goede refinement sessies, reviews en écht teamwork. Je hebt de vrijheid om de dingen te doen zoals jij

Bekijk vacature »

BI Developer

Bedrijfsomschrijving De organisatie waar je komt te werken als (Senior) BI Developer is een grote internationale financiële instelling. Met vele vestigingen in Nederland zijn ze een belangrijke speler op de financiële markt. Jij zal hoofdzakelijk op het kantoor in Amsterdam werkzaam zijn, maar het kan ook voorkomen dat je af en toe naar een andere vestiging gaat. Het bedrijf telt ongeveer 5000 medewerkers waarvan ruim 150 ICT'ers. Het team waar je in komt te werken als (Senior) BI Developer is een ambitieus BI team dat zich bezighoudt met lokale en internationale uitdagingen. Zo zit een Junior BI Developer, 2 (Medior)

Bekijk vacature »

Java Developer gezocht voor een leuk bedrijf!

Bedrijfsomschrijving Voor een leuke klant ben ik zoekende naar een Java Developer. Deze organisatie bestaat uit ongeveer 30 leuke collega’s die allemaal meewerken aan opdrachten voor klanten. Het uitgangspunt binnen alle werkzaamheden is het standaardiseren van communicatiestromingen/bestanden van klanten. Er heerst hier ook een pragmatische mentaliteit waarbij je samen met collega’s zoekt naar de beste oplossingen voor klanten om bestanden overzichtelijk en makkelijk te maken. Deze klant laat zich het beste omschrijven als een warme organisatie waarbij de collega's onderling elkaar vooruit helpen en goed samenwerken. De organisatie is met 30 medewerkers relatief klein, maar is daardoor wel ontzettend gezellig

Bekijk vacature »

Midlevel/Sr Developer bij leverancier communicatie

Een van de grootste leveranciers van communicatieplatformen aan bijv. internationale telecompartijen is op zoek naar een nieuwe teammember: een ervaren Midlevel tot Senior .Net Developer. De organisatie werkt met de nieuwste en uitsluitend Microsoft .Net technologieën (.Net Core, Azure) en producten als Docker en Kubernetes. Zij werken in Scrum sprints met teams waar samenwerking en (persoonlijke)groei hoog in het vaandel staat. Ze zijn op zoek naar gepassioneerde .Net Developers, waarbij ervaring met bovengenoemde technologieën geen harde eis maar een pré is. Genoeg ruimte dus om ervaring hierin op te doen. Drie jaar geleden hebben zij naast hun huidige applicatie een

Bekijk vacature »

Pagina: 1 2 3 volgende »

Ozzie PHP

Ozzie PHP

18/05/2014 17:09:16
Quote Anchor link
Hi guys,

Een Processor/Core/Kernel class doorloopt allerlei stappen. Mag de consructor deze stappen triggeren/uitvoeren? Even een heeeeel erg versimpeld voorbeeldje met 3 fictieve functies.

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
<?php

class Processor {

  private $request;

  public function __constructor($request) {
    $this->request = $request.
    $this->initializeRequest();
    $this->executeRequest();
    $this->sendResponse();
  }

}


?>

Zou de constructor deze functies mogen triggeren? Is dat oké volgens het OOP principe?
 
PHP hulp

PHP hulp

12/04/2021 00:50:13
 
D Vivendi

D Vivendi

18/05/2014 17:26:33
Quote Anchor link
Ja tuurlijk, waarom zou dat niet mogen?

De vraag is meer of het handig is. En dat kan jij alleen beantwoorden. Als jij denkt dat het handig is dat die class direct methods etc aanroept op het moment dat jij daar een instantie van aanmaakt, dan is dat goed.

Ik zou overigen wel aan type hinting doen wanneer dat kan, Dus:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Public function __construct ( IRequest $request ) { }


Dan weet je zeker dat het object dat jij binnen krijgt beschikt over bepaalde methods.
Gewijzigd op 18/05/2014 17:28:23 door D Vivendi
 
Ozzie PHP

Ozzie PHP

18/05/2014 17:31:45
Quote Anchor link
Die typehinting doe ik ook ;) Dit was slechts een voorbeeldje.

Oké... ik vroeg me dus af of zoiets oké is, omdat de constructor dan het hele proces "aanstuurt".

Je zou bijvoorbeeld ook dit kunnen doen:

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 Processor {

  private $request;

  public function __constructor($request) {
    $this->request = $request.
    $this->execute();
  }


  private function execute() {
    $this->initializeRequest();
    $this->executeRequest();
    $this->sendResponse();
  }

}


?>

Nu stuurt de "execute" method alles aan, maar volgens mij is dit eigenlijk een "schijn"-constructie omdat de "execute" method alsnog door de constructor wordt aangeroepen en het in feite dus een verlengstuk van de constructor is. Mee eens?
Gewijzigd op 18/05/2014 17:32:25 door Ozzie PHP
 
D Vivendi

D Vivendi

18/05/2014 17:41:11
Quote Anchor link
Oneens. Het kan wel handig zijn om private methods aan te roepen vanuit je constructor. Maar alleen zodat je niet veel logica in een constructor hoef te hebben. Stukken logica verhuis je dan naar methods die je een goed omschrijvende naam geeft.

Ik dacht dat je het eerst over public methods had.
 
Ozzie PHP

Ozzie PHP

18/05/2014 17:49:33
Quote Anchor link
Nu volg ik je even niet meer. Ben je het nu wel of niet eens om die methods vanuit de constructor aan te roepen? Het gaat om private methods.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

18/05/2014 17:54:01
Quote Anchor link
Wat je goed moet begrijpen Ozzie is dat alles wat de constructor doet je niet meer kunt onderbreken als je een nieuwe instantie van de class aanmaakt. Als je later de class gaat gebruiken en je wil na het instantiëren nog een property van het object wijzigen dan heeft je constructor al een aantal stappen doorlopen eer jij de kans krijgt deze property te wijzigen. Dat kan soms onhandig zijn. Daarnaast is het zo dat een constructor niets kan return-en. Ook dat is in sommige gevallen niet handig en zou bij mij reden zijn om een nieuwe method aan te maken. Ik zie die constructor eigenlijk als een methode om de class-properties te initialiseren. Wat mij betreft hoort dus alleen $this->initializeRequest(); in de constructor thuis.

D Vivendi op 18/05/2014 17:41:11:
Oneens. Het kan wel handig zijn om private methods aan te roepen vanuit je constructor. Maar alleen zodat je niet veel logica in een constructor hoef te hebben. Stukken logica verhuis je dan naar methods die je een goed omschrijvende naam geeft.

Ik dacht dat je het eerst over public methods had.


Private of public heeft hier niets mee te maken. Het mag beiden vanuit de constructor.


Toevoeging op 18/05/2014 18:00:15:

Ozzie PHP op 18/05/2014 17:31:45:
Nu stuurt de "execute" method alles aan, maar volgens mij is dit eigenlijk een "schijn"-constructie omdat de "execute" method alsnog door de constructor wordt aangeroepen en het in feite dus een verlengstuk van de constructor is. Mee eens?


Ja en Nee. die execute method kan ook later nog worden aangeroepen vanuit een andere method. Hierdoor is het geen verlengstuk meer van de constructor. Wanneer er echt geen reden valt te bedenken onder welke omstandigheden deze functie later nog eens aangeroepen zou kunnen worden dan is het inderdaad niets meer dan een verlengstuk van de constructor maar als dat dan de leesbaarheid van de code verbeterd ben ik een voorstander om het alsnog te gebruiken. Uiteraard moeten de namen van je methods zo goed mogelijk omschrijven wat de taak is van de method zoals D Vivendi opmerkt.
 
Ozzie PHP

Ozzie PHP

18/05/2014 18:00:17
Quote Anchor link
Dankjewel voor je reactie Frank. Het is ook niet de bedoeling dat er na het instantiëren van het object er nog iets mee gebeurt. Dus op zich klopt dat wel.

>> Wat mij betreft hoort dus alleen $this->initializeRequest(); in de constructor thuis.

Oké... maar ik wil dus niet handmatig de "executeRequest" method aanroepen, die moet dus ergens door worden aangeroepen. In de constructor zelf? Of de constructor een soort van "execute" method laten aanroepen die vervolgens alle methods aanroept? Volgens mij schiet ik daar eigenlijk weinig mee op.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

18/05/2014 18:02:47
Quote Anchor link
Ehm ik had nog wat toegevoegd Ozzie, en als jij zegt dat die handelingen in ieder voorkomende situatie direct uitgevoerd kunnen worden dan mag dat dus gewoon.
 
Ozzie PHP

Ozzie PHP

18/05/2014 18:18:32
Quote Anchor link
Oke... maar in principe als aan de "voorwaarden" die jij noemt is voldaan, dan kan zo'n constructie als dit dus gewoon prima? :)

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
<?php

class Foo {

  private $foo;
 
  public function __constructor($foo, $bar) {
    $this->foo= $foo.
    $this->initializeFoo();
    $this->executeFoo();
    $this->doTheFoo();
    $this->addSomeBar($bar);
    $this->createFooBar();
  }

}


?>
 
Frank Nietbelangrijk

Frank Nietbelangrijk

18/05/2014 19:28:00
Quote Anchor link
Jep
 
Ozzie PHP

Ozzie PHP

18/05/2014 20:01:19
Quote Anchor link
Allrightie... thanks :)
 
Dos Moonen

Dos Moonen

18/05/2014 20:21:11
Quote Anchor link
Wauw, wat is dat lelijk!

Misschien nog eens nalezen wat het doel van een constructor is?
 
Ozzie PHP

Ozzie PHP

18/05/2014 20:43:09
Quote Anchor link
>> Wauw, wat is dat lelijk!

Kun je ook uitleggen waarom Dos? Ik roep geen enkele functie van buiten de class aan. Dus alles moet vanuit de class zelf worden gestart. Hoe kan ik dat dan volgens jou het beste doen?

Ik vind het leuk dat je reageert... maar het is dan ook wel handig als je aangeeft hoe het volgens jou dan wel moet :-)
 
Wouter J

Wouter J

18/05/2014 20:45:32
Quote Anchor link
>> Ik vind het leuk dat je reageert... maar het is dan ook wel handig als je aangeeft hoe het volgens jou dan wel moet :-)


Dos Moonen:
Misschien nog eens nalezen wat het doel van een constructor is?


Heb je dat al gedaan?
 
Dos Moonen

Dos Moonen

18/05/2014 20:48:21
Quote Anchor link
Een constructor moet een object gebruiksklaar maken. Die constructor van jou doet veel meer.

Een optie is om de constructor private te maken en het meeste van wat nu in de constructor gebeurt verplaatsen naar een public static method.
 
Wouter J

Wouter J

18/05/2014 20:50:20
Quote Anchor link
Dos: ook dat is niet mooi. Een static method die en class aanmaakt is een factory en niks anders en het enige wat een factory mag doen is het aanmaken van een object (die vervolgens zichzelf gebruiksklaar maakt).

Je moet dit soort dingen gewoon nooit bij aanmaken doen :)
 
Ozzie PHP

Ozzie PHP

18/05/2014 20:51:20
Quote Anchor link
@Wouter:

Ik weet wat het doel is. En daar stelde ik dus een vraag over:

Ozzie PHP op 18/05/2014 17:09:16:
Zou de constructor deze functies mogen triggeren? Is dat oké volgens het OOP principe?

Volgens Frank mag ik dat doen. Volgens Dos niet?

Wat is dan volgens Dos wél de juiste manier?

@Dos:

>> Een optie is om de constructor private te maken en het meeste van wat nu in de constructor gebeurt verplaatsen naar een public static method.

Wat is dan het wezenlijke verschil als ik vragen mag? En waarom een static method?

Toevoeging op 18/05/2014 20:52:12:

>> Je moet dit soort dingen gewoon nooit bij aanmaken doen :)

Maar dan moet ik het handmatig triggeren dus?
 
Wouter J

Wouter J

18/05/2014 20:53:29
Quote Anchor link
>> En waarom een static method?

Omdat je een object met private constructor niet kunt aanmaken.

>> Maar dan moet ik het handmatig triggeren dus?

Ja, erg hè? :P
 
Ozzie PHP

Ozzie PHP

18/05/2014 21:12:51
Quote Anchor link
>> Omdat je een object met private constructor niet kunt aanmaken.

Oké... maar net zeg je nog dat ik geen static method moet gebruiken :-s

>> Ja, erg hè? :P

Alle gekheid op een stokje. Het gaat er niet om of het wel of niet erg is.

Waar het om gaat is het volgende. En ik hoop dat je dan even kunt meedenken met me ;)

Het enige wat die class kan doen, is een request afhandelen. Niks meer en niks minder. Ward vertelde ooit op het forum dat als je een bepaalde functie hebt die je altijd aanroept na het initialiseren van een class, dat je dan die functie net zo goed in de constructor kunt stoppen, aangezien de functie blijkbaar altijd moet worden aangeroepen. Goed punt toch? Dus vanuit dat oogpunt zou ik de execute functie vanuit de constructor kunnen aanroepen.

Is dit dan wel oké?

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 Processor {

  private $request;

  public function __constructor($request) {
    $this->request = $request.
    $this->execute();
  }


  private function execute() {
    $this->initializeRequest();
    $this->executeRequest();
    $this->sendResponse();
  }

}


?>
 
Wouter J

Wouter J

18/05/2014 21:24:31
Quote Anchor link
Nee, de constructor maakt een object klaar voor gebruik. Niks meer niks minder. Hij voert niks uit, hij doet niks, alleen klaar maken voor gebruik.
Het maakt niks uit als hij het uitvoeren naar een andere functie verplaatst en het vervolgens aanroept. Dan gebeurd het nog steeds tijdens de constructie periode.

Ik zou niet eens die Request meegeven als constructor argument, waarom zou je niet 2 verschillende requesten mogen afhandelen met hetzelfde object?

Nogmaals: Is het erg als je 2 requesten afhandelt? Nee toch? Waarom zou je je dan gaan beperken?
 
Ozzie PHP

Ozzie PHP

18/05/2014 21:41:40
Quote Anchor link
>> Ik zou niet eens die Request meegeven als constructor argument, waarom zou je niet 2 verschillende requesten mogen afhandelen met hetzelfde object?

Omdat je per pagina-aanroep maar 1 request kunt afhandelen.

Maar oké... dus jij zegt: niks aanroepen vanuit de constructor.

Ben jij het dan niet eens met de opmerking van Ward? Dus dat wanneer je altijd dit doet:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$core
= new Core($request);
$core->execute();
?>

Dat je dan net zo goed die execute method kunt aanroepen vanuit de constructor?
 

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