[oop] setFoo en/of setFoos?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

C# .NET Developer

Bedrijfsomschrijving Onze klant is een mooie en innovatieve multinational in de regio Utrecht. Ze staan bekend om de hoge kwaliteit van dienstverlening en streven ernaar dit continu te verbeteren. Om dit te kunnen doen zijn zij opzoek naar een Software Developer. Als C# .NET Developer ga je aan de slag met het ontwikkelen van bedrijf kritische software en applicaties. Zo zijn er applicaties en software die van belang zijn voor de bedrijfsvoering, de medewerkers van de organisatie, maar ook voor het klantenbestand van de organisatie. Het landschap is zowel functioneel als technisch en daarmee erg breed. Je komt te werken

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 »

Software Developer die een bijdrage levert aan de

Dutch is mandatory for this position. Vind jij het belangrijk om een baan te hebben die bijdraagt aan een schonere wereld? Een baan waarbij je direct impact hebt in het digitalisering van informatiestromen, oftewel een wereld zonder papier. Doormiddel van hun eigen ontwikkelde software kunnen bedrijven digitaal documenten beheren, delen, ondertekenen en archiveren. Dat betekent dat er geen printers of scanners meer nodig zijn en je bent niet meer afhankelijk van koeriers. Dit scheelt tijd, geld en grondstoffen. Samen met een team van vijf developers ga je nieuwe software oplossingen ontwikkelen. Daarnaast ga je ook nieuwe gebruiksvriendelijke functionaliteiten aan onze

Bekijk vacature »

Functioneel Applicatiebeheerder

Wij zijn op zoek naar een enthousiaste Functioneel Applicatiebeheerder Jij: Vindt het leuk om binnen een klein IT-team aan de slag te gaan met het functioneel beheer van voornamelijk Microsoft Business Central, maar ook andere applicaties. Kan goed schakelen tussen operationeel beheer en business change en wordt blij van een brede functie die bestaat uit beide aspecten. Zoekt graag dingen uit, analyseert processen en informatiestromen waarbij je in oplossingen denkt. Hebt kennis van ITIL, TMap en BiSL of bent bereid om hier trainingen in te volgen. Bent in staat om de vragen en behoeften van gebruikers te vertalen naar concrete

Bekijk vacature »

Senior C# Developer

You'll build modern applications for Coolblue back’s office. We have a lot of friends, and they crave well-structured data and user-friendly, task-focused applications. How do I become a Senior C# Developer at Coolblue? You regularly participate in brainstorm sessions about user experience, data, and task flow with the UX Designer, Product Owner, and Data Scientists in your team. Besides that you will create disconnected, highly congruent, and testable code that can easily be maintained and is future-proof. Want to become Senior C# Developer at Coolblue? Read below if the job suits you You enjoy doing this Working with various types

Bekijk vacature »

DevOps Engineer

DevOps Engineer bij de Nationale Politie Werken bij de Politie op basis van detachering Voor onze opdrachtgever, de Nationale Politie in Odijk, zijn we met spoed op zoek naar DevOps Engineers o.b.v. detachering. Binnen het team Werkplekken, Workspace & Innovation dragen ze zorg voor de inrichting en beheer van de fysieke en virtuele werkplekken (endpoints) die door de politie organisatie gebruikt worden. Dit doe je in de grootste werkplek omgeving van Nederland. Wat zijn jouw verantwoordelijkheden en werkzaamheden? Doelstelling: Als DevOps Engineer help je bij het maken en verbeteren van de benodigde werkplek en backend onderdelen op basis van het

Bekijk vacature »

Python Developer / Data Engineer / data pipelines

Bedrijfsomschrijving Bij dit grote, innovatieve technische bedrijf wil men graag flink groeien dit jaar, namelijk van zo'n 100 naar 120 mensen. In de afgelopen jaren is er hard gewerkt om een nieuw software product op de markt te zetten ter ondersteuning van hun fysieke producten en omdat dit een groot succes is, wordt het nu uitgerold over het hele bedrijf en daarmee een groot deel van de wereld. Er is dus werk aan de winkel! Jij werkt in het back-end team dat ervoor zorgt dat grote hoeveelheden data van de bron naar de front-end worden gebracht in het juiste formaat.

Bekijk vacature »

.NET Developer / Azure

Bedrijfsomschrijving Deze organisatie is gevestigd in het hart van Brabant en wordt gezien als de één van de beste .NET development organisaties in de provincie. Dagelijks werk je hier met ruim 40 enthousiaste .NET Developers, verdeeld over 9 Scrum teams, aan zeer complexe backend systemen. De backend systemen staan in het teken van high-intensity en high-availabilitiy en zijn opgebouwd met onder andere: - C#; - ASP.NET MVC / ASP.NET Core; - Microservices Architectuur; - Azure; - WCF. De teams bestaan uit 3-5 ontwikkelaars, 1 of 2 vaste (technisch)testers, 1 informatie analist en een Product Owner. Je zal niet alleen schakelen

Bekijk vacature »

Full-stack Java Developer

Functieomschrijving Wil jij continu een organisatie en processen optimaliseren? Maak jij graag IT applicaties die impact hebben? Wil jij jezelf en Nederland in beweging houden? Wat ga je doen als Full-stack Java Developer bij Randstad Nederland? Als je als full-stack java developer ergens impact hebt, dan is het hier wel. Wij ondersteunen onze HR-dienstverlening met hightech apps en software, die we continu verbeteren. Zodat onze mensen ervoor kunnen zorgen dat bijvoorbeeld jouw koffer op de band terecht komt op het vliegveld, jouw pakketjes netjes op tijd worden geleverd en goed verzorgt wordt in het ziekenhuis. Onze innovaties volgen elkaar in

Bekijk vacature »

Front-end Developer / Angular

Bedrijfsomschrijving Als Front-end Developer ga je in een DevOps team aan de nieuwste digitale technologieën werken om klanten over de hele wereld te ondersteunen met het optimaliseren van (afval)waterzuivering systemen. Door middel van real-time data in combinatie met voorspellende analyses, AI, Deep Learning en Machine Learning zorgen jij en je team voor inzichten die ernstige milieu en watervervuiling weten te voorkomen. Jouw ervaring als Front-end developer zorgt ervoor dat deze klanten altijd de nieuwste gebruikersinterfaces hebben en zo makkelijk mogelijk deze data kunnen lezen. Zo is de organisatie al meer dan honderd jaar actief bezig met het aanpakken van confrontaties

Bekijk vacature »

Functional Analyst

Zit je altijd vol ideeën over hoe dingen beter kunnen? Ben je graag bezig met verschillende opdrachten en vind je een uitdagende functie leuk? Bedenk je graag slimme oplossingen? Kom dan ons team versterken!! Gateway ontwikkelt en distribueert hèt standaard pakket voor Douane activiteiten. Hierbij gaat het om het sturen van aangiftes en ontvangen van retourberichten, koppelingen in verschillende formaten, real-time koppelingen met de Douane, zoals DTV, en veel meer. Alles gericht op de optimale controle over en inzicht in Douane processen. Met expertise, enthousiasme en kennis van de markt wordt er aanhoudend aan Gateway gewerkt – en al dit

Bekijk vacature »

Full Stack .Net Ontwikkelaar - Regio Rotterdam

Heb jij ervaring met applicatie ontwikkeling, testen en onderhoud van business-kritische .NET applicaties? Wil je graag het verschil maken voor onze projecten bij de Nederlandse overheid, sociale zekerheid en gezondheidszorg? En wil je deel uitmaken van een zeer succesvol team? Wat ga je doen? Als ervaren Full Stack .NET Software Developer ga je werken in een team dat zich bezighoudt met het opnieuw bouwen van bestaande en nieuwe toepassingen met een belangrijke maatschappelijke relevantie waarbij digitale toegankelijkheid, security en informatiebeveiliging belangrijke aandachtspunten zijn. Samen ben je verantwoordelijk voor het realiseren en opleveren van de door de product owner gevraagde functionaliteiten.

Bekijk vacature »

Application Developer Tech Lead

We’re Hiring! A UPS Application Developer Tech Lead *REMOTE WORK POSSIBLE FOR THIS ROLE As a Tech Lead Developer at UPS you work on delivering functionality for highly complex IT systems. You collaborate in agile teams and participate in emerging technologies and processes like CI/CD and DevOps to ensure that we meet our objectives effectively and efficiently. Your primary role is to perform full system life cycle activities, e.g. analysis, technical requirements, design, coding, testing and the implementation of software. Working in our Europe development center in Eindhoven means working in an international team with onsite people as well as

Bekijk vacature »

Fullstack .Net (Core)/C# Developer zet zich in voo

Voor een organisatie gespecialiseerd in het ontwikkelen van software voor dierenartspraktijken ben ik op zoek naar Fullstack .Net (Core)/ C# Developers. De organisatie, 15 jaar geleden opgericht heeft een internationale klantenkring met meer dan 10.000 praktijken. Er hangt een nuchtere en familiaire sfeer, waar je je snel in thuis zal voelen. In 3 Scrum teams wordt er gewerkt aan her/doorontwikkeling van de dierenartspraktijksoftware en aanverwante tools. Je focus ligt bij het design, programmeren, unit testen en deployen van van nieuwe functionaliteiten. Waarbij je voor 80% bezig bent in de backend en 20% in de frontend. Wat moet je kunnen? -

Bekijk vacature »

OutSystems Developer

Bedrijfsomschrijving Deze organisatie is een toonaangevende speler in de vastgoedbranche en telt momenteel ruim 500 medewerkers. Met meer dan 150 applicaties staat er een complex applicatielandschap, bestaande uit standaard- en maatwerkapplicaties. De maatwerkapplicaties worden ontwikkeld door een inhouse development team. Het doel voor de komende periode is het verder vernieuwen en optimaliseren van het huidige applicatielandschap. Zo staat de organisatie aan de vooravond van de implementatie van een gloednieuw applicatiehuis, waar OutSystems een belangrijke rol in speelt. Binnen deze rol word je als OutSystems Developer verantwoordelijk voor de ontwikkeling van uiteenlopende applicaties met OutSystems. Om het nieuwe applicatiehuis te implementeren

Bekijk vacature »

Pagina: 1 2 3 volgende »

Ozzie PHP

Ozzie PHP

05/07/2013 16:44:12
Quote Anchor link
Hallo,

Ik vraag me iets af. Ik heb functies waarbij je 1 "foo" wilt instellen en functies waarbij je meerdere "foos" wilt instellen. Bijv.

setPath($id, $path) // om 1 path in te stellen
setPaths($paths) // om meerdere paths in te stellen ($paths is een array)

Nu vraag ik me af of dat een goede gewoonte is. Ik gebruik 2 functies met bijna dezelfde functionaliteit, alleen in de ene situatie set je dus 1 foo, en in de andere situatie meerdere foos. Ik doe het op deze manier omdat ik denk dat dat efficiënt is. Je roept immers meteen de juiste functie aan.

Ik zou er ook voor kunnen kiezen om alles in 1 method te stoppen en dan op basis van het meegegeven argument te bepalen of er 1 foo moet worden geset of meerdere foos.

Dit komt bij mij best vaak voor. Zo heb ik nu in mijn mail class bijv. deze methods:

setBcc
setBccs
setCc
setCcs
setTo
setTos

Allemaal dubbele functies dus. Is dat wel of niet wenselijk? Het voordeel vind ik dat een functie altijd het juiste argument ontvangt en er dus geen extra controle hoeft plaats te vinden (betere performance). Het nadeel is dat je dus dubbele functies krijgt.

Graag jullie advies.
 
PHP hulp

PHP hulp

13/05/2021 15:22:54
 
Wouter J

Wouter J

05/07/2013 17:11:41
Quote Anchor link
Normaal gesproken heb ik dan altijd setBcc om een array op te geven die de waarde overschrijft en een addBcc om iemand toe te voegen.
 
Ozzie PHP

Ozzie PHP

05/07/2013 18:09:34
Quote Anchor link
Wouter, oke... maar jouw setBcc functie kan dus of 1 persoon toevoegen, of een heleboel?

Ander voorbeeld... ik wil een path toevoegen en heb een addPath($id, $path) method, maar wat nu als ik ineens 100 paden wil toevoegen. Lijkt me niet handig om dan 100x die addPath method aan te roepen. Dan kunnen we 2 dingen doen lijkt mij. Of we maken een aparte addPaths() method, of we passen addPath aan zodat die een array kan ontvangen. Het gaat mij vooral om het principe... moet je aparte methods maken om 1 "foo" toe te kunnen voegen en een aparte method om meerdere "foos" toe te voegen, of... doe je dit altijd via 1 method?
 
Reshad F

Reshad F

05/07/2013 18:23:27
Quote Anchor link
De vraag is .. wil je 1 array hebben of wil je 100x een path object hebben.. toch?
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

05/07/2013 18:45:01
Quote Anchor link
Ik zou het zo doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
class emailer {
    private bccs = array();
    public function bcc($address, $name = '') {
        $this->bccs[$address] = $name;
    }
}

?>
 
Ozzie PHP

Ozzie PHP

05/07/2013 19:35:13
Quote Anchor link
@Reshad: het gaat niet om objecten.

@Ger: dit geeft niet echt antwoord op mijn vraag toch?

De vraag is, stel we willen binnen e-mail class bcc adressen kunnen toevoegen. Dat kan zijn 1 adres of meerdere adressen. Maken we dan 2 functies: 1 om 1 adres toe te voegen en 1 om meerdere adressen toe te voegen. Of maken we 1 functie waarmee we 1 adres, maar ook meerdere adressen kunnen toevoegen.

Snappen jullie mijn vraag?
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

05/07/2013 19:59:52
Quote Anchor link
Ik snap je vraag wel, maar je vraagt om meningen.
Imo maakt het niet zoveel uit of je eerst een array samenstelt en die doorgeeft aan een functie, of telkens die functie aanroept. Het eerste zal in performance schelen, maar dan hebben het over nano seconden. Lekker belangrijk!
 
Ozzie PHP

Ozzie PHP

05/07/2013 20:07:43
Quote Anchor link
Maar er is ook een soort van tussenweg. In mijn situatie doe ik dus vaak dit:

Stel ik wil 1 foo adden:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$id
= 'test';
$foo = 'foo';
addFoo($id, $foo);
?>


En stel ik wil meer foos setten dan krijg je dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$foos
= [['id' =>  'test', 'foo' => 'foo'], ['id' =>  'bartest', 'foo' => 'foobar']];
addFoos($foos);
?>

In bovenstaand voorbeeld heb ik dus een class met een method addFoo en een method addFoos. Om dit dan door te trekken naar de praktijk, ik heb nu dus een e-mail class met deze methods:

setBcc
setBccs
setCc
setCcs
setTo
setTos

En de vraag is of dat gebruikelijk is, of is het gebruikelijk om alleen deze methods te hebben:

setBcc
setCc
setTo

... en er dan op een of andere manier voor te zorgen dat deze methods zowel 1 als meerdere foos kunnen setten. Wat is wijsheid?
 
Wouter J

Wouter J

05/07/2013 20:32:25
Quote Anchor link
setXXX() is naar mijn mening het overriden van de huidige waarde. Voor het toevoegen van een waarde aan een array gebruik je addXXX(). Ik doe het altijd zo:
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 Mail
{
    private $bcc = array();

    public function setBcc(array $bcc)
    {

        $this->bcc = $bcc;
    }


    public function addBcc(EmailAddress $address)
    {

        $this->bcc[] = $address;

        return $this;
    }
}

?>
 
Ozzie PHP

Ozzie PHP

05/07/2013 20:44:27
Quote Anchor link
Wouter, ik begrijp je. Ik leg alleen misschien een beetje krom uit wat ik bedoel. Mijn excuses daarvoor. Het gaat mij niet om het verschil tussen add en set. Het gaat er mij om of ik 2 verschillende functies moet gebruiken om 1 "ding" te setten en om meerdere van die "dingen" te setten.

Voorbeeld:

Stel we hebben een product en voor dit product wil ik slechts 1 producteigenschap setten, dan zou dat zo kunnen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$name
  = 'kleur';
$value = 'rood';
$product->setProperty($name, $value);
?>

Maar stel ik heb een ander product met meerdere eigenschappen, dan krijg je zoiets:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$properties
= ['kleur' => 'groen', 'materiaal' => 'hout'];
$product->setProperties($properties);
?>

Nu is mijn vraag of dit klopt. Ik heb nu 2 functies die bijna hetzelfde doen. Namelijk properties setten. Kan dat? Of moet ik bijv. de setProperty functie laten vallen en op het moment dat ik maar 1 property wil setten dit doen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$properties
= ['kleur' => 'groen'];
$product->setProperties($properties);
?>

Ik hoop dat deze uitleg het iets duidelijker maakt.
 
Wouter J

Wouter J

05/07/2013 20:51:01
Quote Anchor link
En dan nogmaals, ik gebruik dus altijd de eerste maar dan niet setXXX, want dat is dus verkeerd.
 
Ozzie PHP

Ozzie PHP

05/07/2013 21:12:07
Quote Anchor link
Wouter, volgens mij begrijp je het nog niet. Of ik begrijp het niet, kan natuurlijk ook. Je moet dat add/sett even loslaten.

Het kan zijn dat ik in het ene geval 1 ding wil setten en in het andere geval meerdere dingen. Het gaat echt om setten, dus niet om adden.

Stel ik wil in het ene geval in bcc adres setten en in het andere geval 2. Dan kan ik dus setBcc gebruiken voor 1 bcc adres en setBccs voor 2 adressen. Maar is dat gebruikelijk?
 
Jan Koehoorn

Jan Koehoorn

05/07/2013 21:46:37
Quote Anchor link
Ik snap het punt. Ik zou gewoon kijken of het meegegeven argument een array is met is_array.
 
Ozzie PHP

Ozzie PHP

05/07/2013 21:56:52
Quote Anchor link
Ah, ik ben blij dat iemand me dan toch begrijpt :-)

Alleen dan ben ik benieuwd hoe ik het volgende moet oplossen. Weer even het bcc voorbeeld. Bij het toevoegen van 1 bcc adres doe ik nu setBcc('piet', 'piet@puk.nl'). Je hebt hier dus 2 argumenten. Terwijl je bij setBccs($bccs) 1 argument (een array) hebt. Hoe los je dat verschil in argumenten dan op? Ik vind het een lastige situatie.
 
Erwin H

Erwin H

05/07/2013 22:33:36
Quote Anchor link
Ozzie PHP op 05/07/2013 21:12:07:
Wouter, volgens mij begrijp je het nog niet. Of ik begrijp het niet, kan natuurlijk ook. Je moet dat add/sett even loslaten.

Volgens mij begrijpt Wouter prima wat jij bedoelt, maar dender jij weer eens lekker door omdat je perse een antwoord wil hebben dat jouw mening bevestigd. Als je Wouter's commentaar leest is het perfect duidelijk dat hij dus niets ziet in de setBccs, maar zou hij voor een add functie gaan. En dat lijkt mij ook een prima oplossing inderdaad, waarbij jij alleen nog even na zouden moeten denken waarom er een verschil gaat worden gemaakt tussen add en set, zeker als je setBccs loslaat.
Gewijzigd op 05/07/2013 22:34:37 door Erwin H
 
Ozzie PHP

Ozzie PHP

05/07/2013 22:41:41
Quote Anchor link
Erwin, ik zoek helemaal niet een antwoord dat mijn mening bevestigt. Ik probeer de juiste manier te vinden hoe ik iets moet aanpassen.

Het verschil tussen iets setten en adden. Als je iets set worden bestaande waarden overschreven, als je iets add wordt er iets toegevoegd. Ik wil dus niet iets toevoegen maar iets setten. In het ene geval wil ik dus 1 waarde setten en in het andere geval wil ik meerdere waardes setten. Mijn vraag is of ik dat via 1 of 2 functies moet doen. Oh, en het hoeft dus niet per se op bcc te slaan, maar is van toepassing op alles waarvan je er 1 of meer wilt setten/getten/deleten enz.

Stel ik wil configuratiewaardes ophalen. In het ene geval heb ik 1 waarde nodig en in het andere geval heb ik meerdere waardes nodig. Maak je dan 2 functies:

getValue($id) en getValues($ids)

of maak je 1 functie waaraan je een string of array kunt meegeven?
Gewijzigd op 05/07/2013 22:42:10 door Ozzie PHP
 
Erwin H

Erwin H

05/07/2013 23:03:02
Quote Anchor link
Je snapt het dus nog steeds niet. Als je functies van Wouter neemt, dan heb je een set functie voor een x aantal tegelijk, en een add functie als er nog eens 1 bij moet. Voor de duidelijkheid (wat je zo te zien compleet mist) die set functie kan je dus ook voor 1 waarde gebruiken. Als je dus het antwoord van Wouter echt goed had gelezen dan had je allang gezien dat je vraag daarmee volledig beantwoord is.

Getters moet je daarin heel anders zien overigens. Andere discussie.
 
Ozzie PHP

Ozzie PHP

05/07/2013 23:05:14
Quote Anchor link
Erwin, laat maar zitten. Ik snap m'n eigen vraag prima, maar ik heb geen zin om op deze manier en toon een discussie te voeren.

Mag een slotje op.
 
- Raoul -

- Raoul -

06/07/2013 00:38:06
Quote Anchor link
Je weet toch dat we niet aan slotjes doen op phphulp ;-) Er komt heus geen slotje op alleen maar omdat je je vraag niet kunt formuleren!
 
Ozzie PHP

Ozzie PHP

06/07/2013 00:41:23
Quote Anchor link
Ik kan m'n vraag best formuleren, alleen niet iedereen schijnt het te (kunnen) begrijpen.
 
Wouter J

Wouter J

06/07/2013 00:46:43
Quote Anchor link
Begrijp de aanvallende toon in dit topic niet. Ozzie stelt een vraag, vervolgens kun je er op reageren. Hoor je dat? Je 'kun't reageren. Fijn he, zo'n forum! Niemand ziet wat je leest en niemand verplicht je om ook maar ergens op te reageren.

Het feit dat ozzie een vraag stelt met een voorbeeld die ons waarschijnlijk laat afwijken van de werkelijk is niks meer dan een simpel foutje. Door dat foutje heb ik waarschijnlijk wel verkeerde antwoorden gegeven, maar laat het niet zo zijn dat we hier een nutteloos gevechts topic van gaan maken alleen omdat ik iedereen in de verkeerde richting heb gestuurd.

Dat gezegd hebbende, ozzie bedoel je bijna het instellen van settings? Bijv.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
new FormField('text', array(
    'label' => 'Naam',
    'error_bubbling' => false,
    // ...
));
?>


In dat geval zou ik een method setSettings maken die een array van opties krijgt.
Gewijzigd op 06/07/2013 00:47:32 door Wouter J
 

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.