[oop] wanneer statisch?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

.NET developer

Wat ga je doen als Full stack .NET developer Microsoft 365? Je stelt je op als sparringpartner voor het team en PO over toekomstige functionaliteiten, architectuur en mogelijke nieuwe producten. Je bent mede-verantwoordelijk voor het vertalen en omzetten van een user story in een passend technisch design. Je implementeert functionaliteiten op basis van een technisch design en user story. Je bent mede-verantwoordelijk voor het beheer van Azure DevOps, waaronder het beheer van GIT, Build Pipelines, Release Pipelines en geautomatiseerde testen. Hier herken jij jezelf in Hbo werk- en denkniveau of hoger aangevuld met relevante certificeringen en/of cursussen; Minimaal 3 jaar

Bekijk vacature »

Front-end developer

Functie Als front-end developer kom je te werken in een team van 30 gedetacheerde, en het team is momenteel flink aan het groeien. Je hebt ervaring met het bouwen van complexe bedrijfsapplicaties waar je gebruik maakt van de nieuwste technologieën waarmee jij elke klant omver blaast. Het gaat om uitdagende projecten met een gemiddelde doorlooptijd van 2 jaar. Hierdoor heb jij echt de volledige focus op een project en kun je flinke impact maken. Het team zit boordevol met ervaren developers die samen dezelfde ambitie delen. Aan de hand van opleidingen en trainingen kun je certificaten halen in jouw expertise

Bekijk vacature »

Medior/Senior Front-end Developers gezocht (Utrech

Functie Het team bestaat uit 10+ gespecialiseerde (veel senior) front-end ontwikkelaars en ontwerpers die werken aan projecten voor klanten van verschillende groottes (kan twee jaar bezig zijn met 1 klant). Je helpt klanten met ingewikkelde front-end vraagstukken, hierbij kun je denken aan: UX/UI design, CI/CD, architectuur en integratie met back-end systemen. De werkzaamheden verricht je op locatie bij de klant, dit is vaak in de Randstad. De organisatiestructuur is plat en er heerst een informele sfeer, zo kun je met vragen dus terecht bij de directie. Er wordt veel nadruk gelegd op het bevorderen van persoonlijke ontwikkeling door middel van

Bekijk vacature »

Ervaren C#.NET programmeur

Functieomschrijving Voor een moderne werkgever in regio Prinsenbeek zijn wij op zoek naar een ervaren C#.NET programmeur die graag de uitdaging aangaat. Je houdt je bezig met het ontwikkelen van maatwerk webapplicaties voor diverse klanten, waarbij complexe processen optimaal worden ondersteund. Verder ziet jouw takenpakket er als volgt uit: Ontwikkelen en onderhouden van C#.NET-applicaties; Schrijven van hoogwaardige, herbruikbare codes; Schrijven van technische documentatie en gebruikershandleidingen; Bijdragen aan het ontwerp en de architectuur van softwaretoepassingen; Troubleshooten en oplossen van bugs in softwaretoepassingen; Werken met databases en dataopslagoplossingen; Implementeren van beveiligingsoplossingen en het waarborgen van de beveiliging van applicaties en gegevens. Bedrijfsprofiel

Bekijk vacature »

Trainee pega developer

Wil jij een mooie stap maken in jouw carrière? Mooi! Bij De Mandemakers Groep haal je binnen 6 maanden je CSA- en CSSA-certificaten, waarna jij aan de slag kan als Pega-developer in ons IT-team. Achter de schermen zorg jij ervoor dat collega’s efficiënt werken en klanten iedere dag beter geholpen worden. Wil jij daaraan bijdragen? En jouw ICT-skills ontwikkelen? Lees dan snel verder en solliciteer vandaag nog als trainee Pega-developer. Wat ga je doen? Als trainee Pega developer leiden wij je op tot gecertificeerd software developer voor het low-code platform PegaSystems. In de training ben je verantwoordelijk voor een te

Bekijk vacature »

Ervaren PHP ontwikkelaar

Functie Jij als PHP ontwikkelaar komt te werken in een team van 4 andere PHP ontwikkelaars. Je zult je voornamelijk bezig houden met: – Het ontwikkelen van nieuwe features – Doorontwikkelen van de API – Nadenken over de technische infrastructuur – Datakwaliteit Samen met het team ben jij verantwoordelijk voor de verdere ontwikkeling van de software en om de positie als marktleider in Europa te behouden. Ze werken volgens SCRUM in 2 wekelijkse sprints, werken met Jira voor alle tickets en communiceren veel via Slack. Eisen • Minimaal 3 jaar ervaring als back end developer • Je hebt affiniteit met

Bekijk vacature »

Senior SQR Java Developer

Vacature details Vakgebied: Software/IT Opleiding: Senior Werklocatie: Eindhoven Vacature ID: 13333 Introductie Are you passionate about contributing to the world's most advanced machines. Do you thrive in a challenging environment working with highly motivated and skilled teams? If so, we have the perfect opportunity for you! We are seeking a Senior Software Design Engineer for Sequence Tooling to play a critical role in creating and maintaining mission-critical software applications. In this role, you will focus on achieving maintainable software architecture that is transparent and easy to extend while maintaining a strong focus on software quality. You will work closely with

Bekijk vacature »

3D BIM Add-on Developer

As a 3D BIM add- on developer at KUBUS, you will develop add-ons (called BCF- Managers) to the leading building information modeling (BIM) programs Revit, Navisworks, Archicad, AutoCAD and Tekla Structures. BCF Managers enable data transfer between BIM software and BIMcollab. You will work on both the front- and the back-end. As a software company, KUBUS is in a unique position. We build our own products that are used by tens of thousands of users worldwide. Our company is just the right size: big enough to make a real impact in the market, but small enough that as an individual

Bekijk vacature »

Medior Mobile Developer iOS Amsterdam

Functie What will you be doing as Mobile Developer? As an iOS app developer you will work in a multidisciplinary team of app developers, web developers and designers. You will work on world-class apps that will be used by thousands of people. There is a lot of room for self-development on a technical and personal level. Together with the rest of the team you develop in the newest techniques and you go for the best quality. We work with Kotlin Multiplatform Mobile to develop hybrid apps and we guarantee quality with peer reviews, unit testing and we use a CI/CD.

Bekijk vacature »

Medior C# Developer

You'll build modern applications for Coolblue's back office. We have a lot of friends, and they crave well-structured data and user-friendly, task-focused applications. How do I become a Medior 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 C# Developer at Coolblue? Read below if the job suits you. You enjoy doing this Working with various types of

Bekijk vacature »

SQL database ontwikkelaar

Functie omschrijving Ben jij niet bang voor complexe algoritmes? Schikt het schrijven van procedures in T-SQL jouw niet af en heb jij al de nodige informatie in SQL, dan is functie precies wat voor jou! Jouw werkzaamheden gaan er als volgt uit zien: Je gaat werken aan de complexere projecten waar jij van A tot Z bij betrokken bent. Je gaat zorg dragen voor het ontwerp, de ontwikkeling en het updaten van SQL databases. Dit doe je op basis van T-SQL. Jij bent van start tot finish betrokken bij de projecten die jij leidt. Je houdt contact met klanten en

Bekijk vacature »

C# .NET Software Developer

Functie omschrijving Ben jij op zoek naar een nieuwe uitdaging binnen software development waar je gaat werken voor een jong en flexibel bedrijf? Lees dan snel verder! Wij zijn op zoek naar een Software Developer met ervaring binnen C# .NET die enthousiast wordt van het aansluiten en begeleiden van (complexe) nieuwe klanten. Verder begeleid je complexe projecten, ben jij iemand die altijd kansen ziet? Dan zoeken wij jou! In deze functie ga jij je bezighouden met: Meedenken in oplossingsrichtingen; Werken aan de architectuur; Het verbeteren van functionaliteiten binnen het dataplatform; Ontwikkelen van nieuwe technologieën. Bedrijfsprofiel Waar ga je aan de

Bekijk vacature »

Senior Cobol Applicatieontwikkelaar

Bedrijfsomschrijving De IV- organisatie van de Belastingdienst is verantwoordelijk voor en verzorgt de ICT- voorzieningen. Het merendeel van de applicaties wordt op dit moment door de IV- organisatie zelf ontwikkeld, onderhouden en beheerd in het eigen data center. Naast de zorg voor continuïteit op de massale heffing- en inningsprocessen die plaatsvinden binnen een degelijke, stabiele omgeving, wordt er tevens volop gewerkt aan modernisering van het IV- landschap. Dit gebeurt deels intern door gebruik te maken van de expertise die intern aanwezig is, maar ook door het aantrekken van (kant-en-klaar) oplossingen en expertise uit de markt. Functieomschrijving In de applicatie ETM

Bekijk vacature »

Medior/senior Back-end developer gezocht!

Functie Vanwege de groei binnen het bedrijf zijn we op zoek naar versterking in het devlopmenttean. Als back-end developer bouw je aan de bedrijfssoftware die ons helpt bij de primaire processen. Een leuk (intern) project dus waarbij je de software continu doorontwikkeld! Je werkt in een klein team, we hebben dagelijks stand-ups en iedere twee weken een scrum-sessie, begeleid door onze Scrum Master. Hierin krijg je uitgebreid de kans om je ideeën te presenteren, en te overleggen met je mede-ontwikkelaars en de Product Owner. Binnen de ontwikkelteams gebruiken we Trello, Gitlab, Jiira, Confluence en Boockstack. Hiernaast werken ze met de

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 »
Ozzie PHP

Ozzie PHP

01/05/2013 22:17:41
Quote Anchor link
Hallo mensen,

Ik heb een (functie)class gemaakt waarmee je een complete directory verwijdert. De werking is ongeveer zo:

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

$delete_directory
= new DirectoryDeleter('/pad/naar/de/directory/', 301); // 301 is de http status
$delete_directory->deleteDirectory();

?>

Nu zat ik me ineens te bedenken dat ik hier (en waarschijnlijk in vele vergelijkbare situaties) ook een statische class van zou kunnen maken die als volgt werkt:

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

DirectoryDeleter::deleteDirectory('/pad/naar/de/directory/', 301);

?>

Nu vroeg ik me dus af wat eigenlijk het verschil is, en wat de beste optie is?

Iemand die mijn vraag kan beantwoorden?
 
PHP hulp

PHP hulp

17/05/2024 21:12:16
 
Wouter J

Wouter J

01/05/2013 23:16:50
Quote Anchor link
Statics gebruik ik nooit met 1 uitzondering: factory methods
 
Reshad F

Reshad F

01/05/2013 23:19:15
Quote Anchor link
Hmm statische klassen worden naar mijn wetens gebruikt wanneer een methode bijvoorbeeld 1x mag of kan voorkomen in het hele gebeuren.

vb.

je hebt een class execute die er voor zorgt dat je applicatie geëxecute wordt dus je maakt iets aan van

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

public function execute() {
  new
ozziesApplication();
}


?>


dan zou je dit het beste static kunnen maken. Waarom? nou heel simpel omdat je niet 2 methodes wilt hebben die je applicatie opstarten, of runnen.
dus dan zou je moeten hebben

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

public static function execute() {
  new
ozziesApplication();
}



?>


Ik weet niet of ik je vraag goed heb begrepen zo en zo ook eventueel goed heb uitgelegd maar dat zie ik dan wel weer :)
 
Ozzie PHP

Ozzie PHP

01/05/2013 23:19:23
Quote Anchor link
Ah oké... een factory kan toch zijn om bijv een formulier met inputvelden te maken?

Maar in het algemeen kunnen we stellen dat we eigenlijk nooit static classes gebruiken dus?

Toevoeging op 01/05/2013 23:21:13:

@Reshad... volgens mij is het daar niet voor bedoeld... (en ik kan nog steeds meerdere applicaties opstarten in jouw voorbeeld als ik de functie meerdere malen aanroep)
 
Wouter J

Wouter J

01/05/2013 23:31:01
Quote Anchor link
Quote:
een factory kan toch zijn om bijv een formulier met inputvelden te maken?

Nee, een factory is een method die een klasse aanmaakt.

Quote:
Maar in het algemeen kunnen we stellen dat we eigenlijk nooit static classes gebruiken dus?

Ligt aan je smaak. Ik doe het nooit en symfony doet het nooit. Maar laravel bijv. gebruikt bijna niks anders.
 
Ozzie PHP

Ozzie PHP

01/05/2013 23:33:25
Quote Anchor link
Oké... maar kun jij mij het verschil uitleggen tussen statisch en niet-statisch?

Is statisch minder "object gericht" omdat je eigenlijk geen nieuwe classes aanmaakt?
Gewijzigd op 01/05/2013 23:33:37 door Ozzie PHP
 
Reshad F

Reshad F

01/05/2013 23:34:47
Quote Anchor link
hmm niet helemaal correct.

Stel je roept die static methode eenmaal aan. dan heb je dus

een nieuwe ozziesApplication(); aangemaakt. vervolgens runt je applicatie en je komt weer dezelfde methode tegen ergens op regeltje 301324 en dan doe je

new reshadApplication(); dan krijg je een dikke error aan je broek omdat je een static methode niet kunt overriden. vandaar ook dat het static is.
 
Ozzie PHP

Ozzie PHP

01/05/2013 23:37:06
Quote Anchor link
Ik snap je niet helemaal. Als je dezelfde code op regeltje 301324 tegenkomt dan is de inhoud van de method toch nog gewoon hetzelfde, namelijk:

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

public static function execute() {
  new
ozziesApplication();
}



?>

En dus zal er weer een nieuwe ozziesApplication worden aangemaakt
Gewijzigd op 01/05/2013 23:37:29 door Ozzie PHP
 
Tim S

Tim S

01/05/2013 23:42:21
Quote Anchor link
Wouter J op 01/05/2013 23:31:01:
Maar laravel bijv. gebruikt bijna niks anders.


Laravel gebruikt eigenlijk helemaal geen statics.
De classes die je statisch aanroept zijn aliasen voor het voor het instantieren van een nieuwe class.
Moet je maar eens zoeken op Laravel facades.
Gewijzigd op 01/05/2013 23:50:49 door Tim S
 
Wouter J

Wouter J

01/05/2013 23:49:00
Quote Anchor link
Reshad, volgens mij heb je het nog niet helemaal begrepen...

0zzie, volgens mij heb ik je dat al vaker uitgelegd, maar even 2 redenen:
- Statics zijn niet te testen
- een static class is leuk voor het groeperen van functies, maar je kan nou niet echt spreken van objecten...

Tim, het zijn wel statics alleen ze hebben een naampje gekregen (die ik overigens voor de simpelheid maar even weg had gelaten)
Gewijzigd op 01/05/2013 23:50:35 door Wouter J
 
Ozzie PHP

Ozzie PHP

01/05/2013 23:51:42
Quote Anchor link
Allright, er komt weer iets bovendrijven... thanks Wouter!
 
Tim S

Tim S

01/05/2013 23:55:50
Quote Anchor link
Wouter J op 01/05/2013 23:49:00:
Tim, het zijn wel statics alleen ze hebben een naampje gekregen (die ik overigens voor de simpelheid maar even weg had gelaten)


0 statics
 
Wouter J

Wouter J

01/05/2013 23:59:53
Quote Anchor link
Leuk he, een link geven die niet over het onderwerp (facades) gaat? Nee, ik zou heel graag het verschil tussen facades en statcs leren...
 
Tim S

Tim S

02/05/2013 00:09:59
Quote Anchor link
Wouter J op 01/05/2013 23:59:53:
Leuk he, een link geven die niet over het onderwerp (facades) gaat? Nee, ik zou heel graag het verschil tussen facades en statcs leren...

Dan stel ik voor om zoals ik eerder al zei "maar eens te zoeken op Laravel Facades". I.p.v. meteen te zeggen dat het niet zo is, en dat ze alleen maar een naampje gekregen te hebben. :S
In dit artikel worden facades uitgelegd.
 
Wouter J

Wouter J

02/05/2013 00:23:02
Quote Anchor link
Ik weet wel wat facades zijn, maar het zijn en blijven bewoon static methods. Iemand heeft ooit bedacht dat je dit soort dingen met static methods kan doen en die heeft toen het facade design pattern bedacht, sindsdien zijn het static methods met een naampje, namelijk facade.
 
Kris Peeters

Kris Peeters

02/05/2013 11:03:41
Quote Anchor link
Mijn gedacht... Ik wil me strikt beperken tot statische methodes; niets anders. Ik negeer alles wat hier boven al gezegd is, kwestie van mijn verhaaltje te kunnen vertellen.

Elke methode die geen $this nodig heeft, kan je statisch maken.
Een voorbeeld: een methode die controleert of user input niet leeg is, of informatie bevat in een juiste dataType ... en true of false teruggeeft. Dit is dus puur verwerken. Niets opslaan, niets nodig van eigenschappen...

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
<?php
/**
* (BOOL) validData: ...
*/

static function validData($string, $dataType="string") {
  if (strlen($string) > 0) ...
  switch ($dataType) {
    case
'int':
      if (is_int($string)) ...
      break;
    ...
  }

  return true;
}

?>


Wanneer je zo'n soort functie hebt, heb je er alle belang bij om die methode statisch te maken.
Je sleurt namelijk het object niet mee in de methode. De scope in die methode blijft ook heel klein.
Gewijzigd op 02/05/2013 11:08:23 door Kris Peeters
 
Ozzie PHP

Ozzie PHP

02/05/2013 11:13:55
Quote Anchor link
Kris, dankjewel voor je reactie. Wat bedoel je met "Je sleurt namelijk het object niet mee in de methode."?

Het is alleen een beetje lastig... in mijn voorbeeld in mijn allereerste bericht heb ik het over een directory deleter. Hierbij gebruik ik wel $this, want in de constructor geef ik de directory mee en de constructor set deze in een property.

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

private $directory;

public function __construct($directory) {
  $this->directory = $directory;
}


?>

Nu kan ik ook een statische methode gebruiken en de directory meegeven aan die statische methode. En dat zal ook prima werken. De vraag is nu alleen wat je het beste kunt gebruiken en waarom?
 
Kris Peeters

Kris Peeters

02/05/2013 11:34:43
Quote Anchor link
Ik heb het over scope.
Een functie kan best zo weinig mogelijk nutteloze informatie mee sleuren in zijn geheugen.


Dus, ik denk in de eerste plaats aan een class met meerdere methodes. Naast de getters en setters kunnen er methodes zijn die data verwerken en iets terug geven.
Binnen zo'n context is het interessant om die methodes statisch te maken.

Zoals je zelf suggereert in je laatste vraag: ja, inderdaad; ik zou soms aanraden om de data mee te geven met de parameter van de functie, en niet met $this.

Zoals je de vraag nu stelt, weet ik niet of het interessant is voor jouw voorbeeld; of je er netto iets aan over houdt. Want het betekent misschien dat je extra methodes gaat maken en zo.

't Is een kwestie van smaak, lijkt me.
Een bijkomend ding: statische methodes doen je nadenken over wat een functie echt is, wat het doet en waarom je dat gebruikt.
Namelijk: je krijgt iets binnen, je geeft een return terug naar wie er om vroeg.
 



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.