dicht timmeren?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Delphi Programmeur

Functie omschrijving Onze opdrachtgever is gespecialiseerd in kantoor-bedrijfssoftware en zit gevestigd in omgeving Numansdorp. Als programmeur ben jij bij dit bedrijf met het volgende bezig; Je vertaalt technische en functionele ontwerpen naar kwalitatieve software. Je ontwikkelt, ontwerpt en test software. Je maakt daarbij veel gebruik met de volgende tools & technologieën: Delphi 10.3 (Rio), QuickReport 6. Je krijgt in deze rol veel vrijheid en verantwoordelijkheid. Je levert projecten van A - Z op, en werkt daarbij projectmatig en gestructureerd. Bedrijfsprofiel Dit bedrijf richt zich op maatwerk software oplossingen. Deze software oplossingen worden ingezet in de financiële branche. Het betreft een

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

API Developer Red Hat Fuse

Dit ga je doen Als API Developer zal je verantwoordelijk zijn voor het: het maken van API's en het correct laten draaien van de API's op het platform. Hierdoor kom je in aanraking met Red Hat Fuse, Springt Boot, 3Scale, Red Hat SSO, Openshift en Azure DevOps; zorgen voor de kwaliteit van de ontwikkeling, integratie en prestaties van de API's; zorgen voor een stabiel integratieplatform. Hier ga je werken 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 dat hoofdzakelijk op OpenShift, Azure en

Bekijk vacature »

NodeJS developer

Functie Als Fullstack developer kom je te werken in het ontwikkelteam. Je bent samen met je collega’s continu bezig om de software uit te breiden, maar hiernaast doe je onderzoek naar de inzet van nieuwe technieken, tools of bijvoorbeeld Machine Learning. Ze willen met hun software echt voorlopen op andere en toegevoegde waarde leveren voor de eindgebruiker. Mede hierom zijn ze erg benieuwd naar iemand zijn persoonlijkheid, of hij graag nieuwe dingen uitzoekt (Google!), en initiatief neemt. Qua technische kennis zoeken ze iemand die goed op de hoogte is van de nieuwste ontwikkelingen, daar zij nu ontwikkelen op NodeJs back-end,

Bekijk vacature »

Ervaren Software Developer

Functie omschrijving Ben jij een ervaren Software Developer, en heb je ervaring met technieken zoals C#, MS Access & SQL? Vind jij het leuk om maatwerk software te ontwikkelen voor klanten in een specifieke branche? Dan is dit de baan voor jou! Als ontwikkelaar ben jij samen met een team van 12 collega’s verantwoordelijk voor het bouwen van nieuwe functionaliteiten en het uitbreiden van de core applicatie. Belangrijk is dat je ervaring hebt met C# en MS Access. Je bent flexibel en klantvriendelijk ingesteld, omdat het belangrijk is om de klanten zo goed mogelijk van dienst te kunnen zijn. Thuiswerken

Bekijk vacature »

Traineeship ICT regio Amsterdam/Utrecht

Wat ga je doen? Het traineeship begint met een fulltime maand cursussen en praktijkdagen, waarin je de basis van het IT-vak leert op de Shared Servicedesk (SSD). Daarnaast ga je meteen aan de slag voor je eerste certificering! (ITILv4). Je start in een groep met 4 tot 10 deelnemers, waarmee jij gedurende die maand optrekt en je kennis kunt delen. Na het voltooien van de eerste maand ga je direct voor een langere periode aan de slag bij één van onze klanten of blijf je intern bij ons op de Shared Servicedesk. Je bent het eerste aanspreekpunt van de eindgebruikers

Bekijk vacature »

Senior Java developer

Dit ga je doen Jouw taken als Senior Java Developer zijn: Het maken van strategische keuzes omtrent de nieuwbouw van applicaties; Het maken van technische ontwerpen; Hands-on mee ontwikkelen met het team (met o.a. Java FX, JDBC, SQL, REST, Jax-RS, JSON, Maven, JUnit en Spring (boot)); Reviewen van code en feedback geven op collega developers; Analyseren en oplossen van bugs/incidenten door het onderlinge verband te kunnen leggen van verschillende losstaande systemen. Hier ga je werken Het bedrijf waar je als Senior Java Developer komt te werken staat internationaal bekend om het testen van bodemstructuren door middel van echotechnieken en beeldherkenning.

Bekijk vacature »

C# developer

Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Ga je bij ons als C# Developer aan de slag? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. Deze snelgroeiende groep collega’s krijgt energie van hun vak en dat merk je op de werkvloer. Natuurlijk krijg jij de mogelijkheid je te certificeren. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling. Mede hierdoor zij wij dit jaar Microsoft Partner of the Year geworden. Sogetisten staan klaar voor elkaar, hebben lol met elkaar en daarmee behalen we de mooiste resultaten! Werken bij Sogeti

Bekijk vacature »

Junior .NET developer

Functie Wij hebben drie scrumteams. Het eerste team focust zich op het stukje hardware wat wij in huis doen. Zij maken als team o.a. gebruik van C++. De andere twee scrumteams zijn allebei bezig met data verwerking en maken hierbij in de backend gebruik van C# .NET / .NET Core. Het verschil tussen deze teams is dat één team de data verwerking doet voor de mobiele applicatie. Zij werken hierbij dus ook met Xamarin. Het andere team focust zich op de webapplicaties en maakt hierbij ook gebruik van ASP.NET MVC. Op basis van jouw ambities en kwaliteiten kijken wij samen

Bekijk vacature »

Back End Developer .NET

Dit ga je doen Ontwikkelen in C# .NET en werken aan nieuwbouw, uitbouw en onderhoud van de software (die communiceren met 68.000 sensoren, waardoor er meerdere miljoenen berichten per uur verwerkt worden); Samenwerken in Scrum Teams; Meewerken aan verschillende, uitdagende projecten; Werken met nieuwe technologieën en vrijheid krijgen om jezelf te ontwikkelen en door te groeien. Hier ga je werken Je komt als Developer te werken bij een organisatie die gespecialiseerd is in software die real-time wordt gebruikt. De software constateert waar werk moet worden uitgevoerd en de chauffeurs worden met een andere applicatie hierop geattendeerd. Ook wordt er direct

Bekijk vacature »

Fullstack Webdeveloper .NET Azure Big Data SaaS

Bedrijfsomschrijving Deze klant van ons is recentelijk onderdeel geworden van een grote moederorganisatie, ze zijn dé partij als het gaat om software maken voor ambitieuze ondernemers, ze maken maatwerk software. Vanuit het fantastisch vormgegeven hightech gebouw te Rotterdam centrum werken ze met zo'n 40 medewerkers aan hoogwaardige software gericht op financiële data, betaalinformatie, maar ook backoffice software. De software wordt webbased, desktop en mobile aangeboden en er worden zeer moderne ontwikkeltechnieken toegepast. Je moet dan denken aan patroonherkenning, Big Data, Machine Learning en OCR. Als Developer, ongeacht je niveau, ga je hier te maken krijgen met de allerleukste kant van

Bekijk vacature »

.NET developer

Functie Als ervaren .NET ontwikkelaar ontbreekt er aan passie en motivatie niks. Jij bent communicatief sterk en pakt iedere uitdaging dan ook met beide handen aan. Op projectbasis ga jij met je team of met enkele andere ontwikkelaars intern aan de slag bij diverse partners. Op basis van het project ga jij aan de slag en zijn de werkzaamheden en technieken erg divers. Jouw werkgever stelt jouw ontwikkeling hierin voorop, zo krijg je een vast vertrouwenspersoon die één keer in de maand op locatie van jouw project zal kijken hoe het gaat en of er eventuele aandachtspunten zijn. Daarnaast krijg

Bekijk vacature »

Senior .NET developer

Klaar voor een nieuwe uitdaging? Welke technologieën gaan schuil achter de dagelijkse energievoorziening? Als senior .NET developer bij Kenter maak jij samen met je team het verschil, zowel voor de interne organisatie als voor eindklanten. Samen bouwen jullie aan innovatieve dienstverlening met behulp van de nieuwste technologieën en tools. Het is een functie met veel vrijheid, goede arbeidsvoorwaarden én je draagt jouw steentje bij aan de energietransitie. Klinkt dit als iets voor jou? Lees dan verder of solliciteer direct! Wat ga je doen als senior .NET developer? Als senior .NET developer bij Kenter (onderdeel van Alliander) ben je van onschatbare

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

Typescript Developer / Cloud platform

Dit ga je doen (Door)Ontwikkelen van het cloud platform; (Door)Ontwikkelen van microservices; Bouwen van nieuwe functionaliteiten; Verbeteringen aandragen voor het cloud platform; Sparren met de business. Hier ga je werken Onze opdrachtgever, gevestigd in regio Eindhoven, levert een compleet dienstenpakket op het gebied van IT. Zij pakken verschillende (complexe) vraagstukken van grote organisaties op. De sfeer intern is gezellig en informeel. Men houdt van hard werken maar gezelligheid door middel van een borrel of gezamenlijke lunch komt er veel voor. Als Typescript ontwikkelaar word je onderdeel van het team gericht op de (door)ontwikkeling van hun eigen cloud platform welke wordt

Bekijk vacature »

Pagina: 1 2 3 4 5 volgende »

Ozzie PHP

Ozzie PHP

29/02/2012 09:53:54
Quote Anchor link
Ik vraag me af in hoeverre jullie de invoer van parameters controleren / dicht timmeren.

Stel je hebt een functie:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
public function setPath($key, $path) {
  // hier komt wat code
}
?>


Nu moeten zowel $key als $path een string bevatten. Deze functie wordt uitsluitend gebruikt door de programmeur. Mensen van buitenaf kunnen deze functie niet aanroepen (bijvoorbeeld d.m.v. een formulier).

Nu vraag ik me af of ik moet controleren of zowel $key als $path een string zijn. Of gaat dat te ver? Anders moet je namelijk bij heel veel functies dit soort controles uitvoeren. Enerzijds veel controle structuren / overhead en extra code, anderzijds. De input klopt wel altijd.

Graag jullie meningen!
 
PHP hulp

PHP hulp

12/05/2024 15:02:40
 
Wouter J

Wouter J

29/02/2012 10:09:09
Quote Anchor link
Ik doe dat altijd, ik gebruik voor al mijn properties typecasting:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
public function setPath( $key, $path )
{

  $key = (string) $key;
  $path = (string) $path;
  // of als je ze ergens in gebruikt of opslaat in een property dan
  // gebruik ik daar typecasting

}
?>

Behalve natuurlijk als ik ze in een PHP functie gooi en zeker weet dat die altijd een string returned.
 
Ozzie PHP

Ozzie PHP

29/02/2012 10:29:42
Quote Anchor link
Maar Wouter, dat is niet helemaal wat ik bedoel. Ik bedoel echt een controle in de zin van... "hé, $path moet een string zijn en jij geeft een boolean op!".

Ik wil niet (zoals in jouw voorbeeld) dat een boolean wordt geconverteerd naar een string "1".

Mijn vraag is dus echt of je dit moet doen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
public function setPath($key, $path) {
  if (!is_string($key) || !is_string($path)) {
    // Bericht tonen dat $key en $path een string moeten zijn.
  }
}

?>


Mijn vraag is of je dit soort controles moet inbouwen. Wel gebruiksvriendelijk, maar het betekent ook een hoop extra code en dus meer werk.
 
Kris Peeters

Kris Peeters

29/02/2012 10:56:16
Quote Anchor link
Wat ik belangrijker vind, is dat je de parameters en return goed documenteert.

Vertel de programmeur wat de functie doet, wat elke parameter is, ... en daar ga je uiteraard vertellen wat het type is.

En denk ook eens na wat je zou doen indien iets gebeurt wat je niet verwacht.
Wat zou je effectief doen binnen die if() ?

Een return false terug geven, gebeurt wel vaker.
Maar een echo $error ...
Tja, wat heb je daar echt aan?
 
Wouter J

Wouter J

29/02/2012 11:01:42
Quote Anchor link
@Kris, ik denk dat Ozzie een Exception gaat throwen in de if.

Maar inderdaad, die controlles lijken mij onnodig. In elk geval wel voor types. Andere dingen zou je natuurlijk wel kunnen checken, of het bepaalde waardes bevat en wel is wat je verwacht. En een array controleren is ook nog handig, maar of iets een bool, string of int is zou ik niet controleren.
 
Ozzie PHP

Ozzie PHP

29/02/2012 11:02:12
Quote Anchor link
Ik ben zelf niet zo van het "lange" documenteren eerlijk gezegd. Ik geef altijd alleen aan wat de functie doet.

In die if zou ik een exception willen gooien die een bericht toont dat de variabele van het verkeerde type is.

(hoe geef jij aan wat voor type de parameter moet zijn?)

Toevoeging op 29/02/2012 11:02:48:

Wouter J op 29/02/2012 11:01:42:
@Kris, ik denk dat Ozzie een Exception gaat throwen in de if.

correct ;)
 
Kris Peeters

Kris Peeters

29/02/2012 11:46:34
Quote Anchor link
Ozzie PHP op 29/02/2012 11:02:12:
(hoe geef jij aan wat voor type de parameter moet zijn?)


Een voorbeeld, dit staat (als user commentaar) op php.net, bij strpos()

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

/**
 *  This function implements all the strn*pos functions, which return the $nth occurrence of $needle
 *  in $haystack, or false if it doesn't exist / when illegal parameters have been supplied.
 *
 *  @param  string  $haystack       the string to search in.
 *  @param  MIXED   $needle         the string or the ASCII value of the character to search for.
 *  @param  integer $nth            the number of the occurrence to look for.
 *  @param  integer $offset         the position in $haystack to start looking for $needle.
 *  @param  bool    $insensitive    should the function be case insensitive?
 *  @param  bool    $reverse        should the function work its way backwards in the haystack?
 *  @return MIXED   integer         either the position of the $nth occurrence of $needle in $haystack,
 *               or boolean         false if it can't be found.
 */

function strnripos_generic( $haystack, $needle, $nth, $offset, $insensitive, $reverse )
{

    //  If needle is not a string, it is converted to an integer and applied as the ordinal value of a character.
...
?>


Er zijn nog andere coding standards voor commentaar, maar deze stijl is wel gebruikelijk.

Trouwens ...
Goede naamgeving helpt ook heel erg.
De namen $needle en $haystack gebruiken telkens je iets zoekt/detecteert in een groter geheel, is ook een goed idee
Gewijzigd op 29/02/2012 11:51:11 door Kris Peeters
 
Wouter J

Wouter J

29/02/2012 11:49:37
 
Roel -

Roel -

29/02/2012 11:51:14
Quote Anchor link
Kris, ik bedacht me net: hoe noem je een sql resource als je type?
 
Wouter J

Wouter J

29/02/2012 11:58:33
Quote Anchor link
@Roel, een resource. Alle resources zijn resources, een overzicht van alle resources in Core PHP: resource
 
Kris Peeters

Kris Peeters

29/02/2012 12:05:03
Quote Anchor link
Je kan altijd inspiratie halen uit
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
gettype($res)
?>


(geeft dus inderdaad "resource")
 
Ozzie PHP

Ozzie PHP

29/02/2012 12:06:07
Quote Anchor link
Oké, thanks.

Als iets een array moet zijn of een object van een bepaalde instantie, zetten jullie dat dan wel bij de parameters of zet je dat allemaal in het commentaar? Bijv.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
public function(array $array, MyInstance $my_instance) {

}

?>
 
Roel -

Roel -

29/02/2012 12:06:28
Quote Anchor link
Thx, dat moest ik weten. Terug naar het onderwerp!
 
Wouter J

Wouter J

29/02/2012 12:25:14
Quote Anchor link
@Ozzie, een array zet ik er wel altijd bij de parameters. Dat omdat strings/ints/bools en arrays totaal verschillen. Precies zoals dat ik kijk of iets een object is.

Even een voorbeeldje van hoe ik een method zou schrijven in PHP:
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
43
<?php
/**
 * This class is a example of PHPdoc and typing
 *
 * @author Wouter J
 * @package <Project naam>
 * @subpackage <Namespace naam>
 * @license Creative Commons 0.0
 */

class Example
{
  /**
   * All values that where set in this object
   *
   * @var array
   */

  protected $items = array();

  /**
   * Add an item to the object
   *
   * @param string $key The key of the item
   * @param mixed $value The value of the items
   */

  public function setItem( $key, $value )
  {

    $this->items[$key] = $value;
  }


  /**
   * Add multiple items to the object
   *
   * @param array $items All items with Array key represents the name and the array value the value
   */

  public function setItems( array $items )
  {

    foreach( $items as $key => $value )
    {

      $this->items[$key] = $value;
    }
  }
}

?>
 
Ozzie PHP

Ozzie PHP

29/02/2012 12:28:50
Quote Anchor link
Thanks Wouter. Waarom zet je voor iedere parameter @param?
Waarom bijv. niet:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
/**
   * Add multiple items to the object
   *
   * $items = array All items with Array key represents ...
   */

?>
 
Wouter J

Wouter J

29/02/2012 12:32:13
Quote Anchor link
@Ozzie, dat is de PHPdoc syntax, een standaard die in heel PHP wordt gebruikt. Je zou het bijv. ook nog verder kunnen uitbereiden en dan gebruik je ook andere PHPdoc tags:
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
<?php
/**
 * Some function who does something
 *
 * @access protected
 */

protected function some()
{

  // do something
}

/**
 * This function does something with the values and return them
 *
 * @param string $prefix The prefix, default is null
 * @return array $items The items
 */

public function doSomething( $prefix = null )
{

  // ...

  return $items;
}

?>
 
Ozzie PHP

Ozzie PHP

29/02/2012 12:36:11
Quote Anchor link
Oké, thanks. Ik vind het maar onoverzichtelijk... meer commentaar dan code :D
 
Wouter J

Wouter J

29/02/2012 12:41:19
Quote Anchor link
Dat komt omdat de functies nu nog heel klein zijn. Bij getters en setters zou ik het ook niet gebruiken, was slechts een voorbeeld. Maar bij grotere functies is het zeker handig om snel een overzicht te krijgen van wat er in komt, wat er uit en wat er mee gebeurd.
 
Ozzie PHP

Ozzie PHP

29/02/2012 12:56:03
Quote Anchor link
Hmmm, oké... maar even terugkomend op mijn vraag. Goed documenteren dus, en parameters niet controleren op type, met uitzondering van array en instances? Is dat een terechte conclusie?
 
Niels K

Niels K

01/03/2012 10:11:00
Quote Anchor link
Quote:
met uitzondering van array en instances?

Ik neem aan dat je weet dat je die gewoon voor de var kan zetten?

Example:

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

class Dier {

    public function addOzzie(Aap $ozzie, array $items) {}
}


?>


Wanneer Ozzie nu geen instance van 'Aap' ( :-) ) is, wordt er een exceptie gethrowd.
 
Ozzie PHP

Ozzie PHP

01/03/2012 10:14:38
Quote Anchor link
Euh jaa, dat is ook precies wat ik bedoelde... lees nog maar een keer ;)

Enne.. bedankt dat je me vergelijkt met een aap he! ;)
 

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