[PHP] Code planning en architectuur - tips?

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Gooly
  • Registratie: Juli 1999
  • Laatst online: 14-05 17:46

Gooly

Wie? Ik?

Topicstarter
Zijn er mensen die me met tips, truuks, advies kunnen helpen om te starten met code planning en architectuur? (In mijn geval betreft het dus PHP) Waarschijnlijk ben ik met enkele relevante termen al enorm geholpen, omdat ik dan een richting heb.
Die fase voorafgaand aan het daadwerkelijk bouwen met code is iets waar ik heel graag in wil duiken, maar ik weet niet waar ik moet beginnen. Ik ben inmiddels een paar vruchteloze Google zoek sessies verder. Waar ik naar op zoek ben zijn eigenlijk gewoon een paar relevante termen of verwijzingen waar ik kan beginnen.

De achtergrond
Ik ben volledig autodidact en daardoor heb ik een nogal grillig "kennis en vaardighedenprofiel" Er zijn dingen die ik bijna slapend zou kunnen doen, maar er bestaan ook heel voor de hand liggende vaardigheden die ik niet heb. Geen opleiding van betekenis hier. Ik heb mezelf alles ad-hoc/on demand eigen gemaakt. Als er iets nodig was ging ik op zoek hoe ik dat het beste aan kon pakken en vanaf dat moment wist en kon ik het dan.

En dat heb ik jarenlang gedaan met behulp van Notepad++, een FTP client, webhosting en mijn browser inspector, verder niks. Sinds een dik jaar ben ik alles wat professioneler aan het aanpakken om het hobbyisten niveau wat te ontstijgen. En daarom werk ik nu alweer een poos met een IDE (PHP Storm), doe alles op een zelf ingerichte dev servertje op een VM. Ik werk vanuit een GIT repository en ben veel kritischer op mijn eigen code geworden; het is niet langer voldoende dat het werkt, het moet ook veilig en efficient werken.

Maar die voorbereidende stap, voordat ik mijn PHP Storm opstart en code in ga voeren mis ik ernstig. En het is dus ook helemaal leeg hoe ik daar mee moet beginnen. Ik wil af van dat al code typend denken: "Nee wacht, ik haal dit hele stuk hier weer weg en dan stop ik het in een functie, want ik heb het straks nog ergens anders nodig." En zodra ik dat dan heb gedaan "Damn, ik had het beter in die class kunnen zetten, want het is daar gewoon een logisch onderdeel van"

Het zou me zoveel tijd en energie schelen als ik vooraf wist hoe ik de code op ga bouwen en organiseren. Daar moeten vast beproefde methodieken, tools, of artikelen over bestaan die ik nog niet heb kunnen vinden.

See that's the trouble with reality, it's taken far too seriously.

Beste antwoord (via Gooly op 07-02-2018 17:04)


  • johnkeates
  • Registratie: Februari 2008
  • Laatst online: 04-07 16:30
Dit is een vrij algemene vraag die ook wel vaker beantwoord is. Het komt nagenoeg altijd neer op "Hoe leer ik programmeren".

Programmeren is weinig afhankelijk van de taal die je gebruikt of de code die je uiteindelijk typt, en is veel meer gebaseerd op bewezen concepten, paradigma's en workflows.

Stel dat je in elk geval procedureel en object-georienteerd snapt, wat basis hebt in architectuur en engineering, dan kan je al heel wat zelf doen. Een introductie in data structuren en wat algoritmen kan ook geen kwaad.

Belangrijke: Kan iedereen leren programmeren?

Advies programmeercursussen in Nederland
werken in de ICT waar te beginnen
Niet kiezen voor een taal, vanwege de tooling?
Java vs .NET?
Programmeren hoe en wat?
Apps bouwen, welke software?
Effectief Leren ontwikkelen in C#
Welke taal beste beginnen te leren als beginner?
waar te beginnen met prpfielen site
[objective c] Waar te beginnen, beste om snel te leren.
Ik wil leren programmeren

Begin in elk geval bij het begin: als je echt wil leren programmeren zal je eerst moeten leren het concept van een 'programma' los te zien van code. Als je zo ver bent kan je een OO-type (object-oriented type) taal willekeurig uitwisselen voor een ander. Zo zal je bijvoorbeeld in minuten kunnen switchen tussen Python, Java, C# zonder daar veel moeite voor te doen.

Het zit hem dan verder nog voor dagelijks werk in de investering in tooling. Als je standaard Git gebruikt en iemand opeens met iets ranzigs aan komt zetten als CVS, TFS of perforce clearcase dan zal je je even achter de oren krabben waarom de tools opeens ruk zijn, maar je manier van programmeren is daar niet afhankelijk van. Hetzelfde met editors en IDE's. Stel dat je Sublime Text met minimale plugins gewend bent en iemand komt opeens met een stront trage Atom aanzetten, dan zal dat ook niet de leukste ervaring zijn. Net als met IntelliJ vs. Visual Studio of zaken als NetBeans en Eclipse. Allemaal slechts gereedschap die in meer of mindere mate alleen je snelheid beinvloeden, niet wat je uiteindelijk kan.

Als je nog wat ingangen zoekt om bepaalde concepten of algoritmen te vinden, kijk bijvoorbeeld in de zijbalk op: Wikipedia: Software development zodat je bijv. zaken als TDD, DDD, MVC, MVVM enz. even kan opzoeken. En kijk halverwege deze pagina: Wikipedia: Sorting algorithm voor wat sorteer algoritmen. Genoeg om je even in te verdiepen zodat je wat meer zicht krijgt op wat programmeren inhoudt.

[ Voor 40% gewijzigd door johnkeates op 04-02-2018 16:05 ]

Alle reacties


Acties:
  • +1 Henk 'm!

  • X_lawl_X
  • Registratie: September 2009
  • Laatst online: 11-09 16:13
Gebruik een framework ipv zelf het wiel opnieuw uit te vinden (bijv Symfony of Laravel). Leer je nog van ook.

Acties:
  • 0 Henk 'm!

  • downtime
  • Registratie: Januari 2000
  • Niet online

downtime

Everybody lies

X_lawl_X schreef op zaterdag 3 februari 2018 @ 10:14:
Gebruik een framework ipv zelf het wiel opnieuw uit te vinden (bijv Symfony of Laravel). Leer je nog van ook.
In zijn geval gaat een framework hem echt niet helpen. Wat hij mist is formele training om de basics van goed ontwerp te leren. De oplossing is dan ook: Een opleiding gaan doen of een hele stapel goede boeken gaan lezen.

Acties:
  • +1 Henk 'm!

  • Morax
  • Registratie: Mei 2002
  • Laatst online: 12-09 17:02
Daar heb je wel een techniek voor: UML. Hierin kan je je structuur van classes en dergelijke helemaal uittekenen als je dat zou willen.

Maar wat jij hier vraagt bestaat mijns inziens niet: Je zal altijd momenten hebben waarop je denkt "dit had ik beter anders op kunnen lossen" waarna je je code ietwat herstructureert. Niemand kan software dusdanig van tevoren uitdenken dat je nooit gaandeweg iets hoeft te wijzigen of erachter komt dat een andere manier handig is.

Het enige wat hierbij wel enorm helpt is ervaring. Gewoon doen. Ervaring helpt je later die situaties sneller herkennen zodat je je niet achteraf bedenkt dat iets anders moet, maar al tijdens het schrijven van een bepaalde functie bedenkt dat iets niet handig is.

Dit is mijn persoonlijk ervaring als iemand die zichzelf HTML, PHP en MySQL geleerd heeft uit interesse, daarna de opleiding HBO informatica heeft gedaan en afgerond en inmiddels al meer dan 9 jaar als PHP programmeur werkt ;)

Edit: Nu ik het nalees lijkt het net of ik promoot om altijd maar gewoon te gaan programmeren, dat wil ik absoluut niet zeggen. Ook ik denk (in mijn hoofd) structuren uit voor ik begin met programmeren. Ik wil alleen zeggen dat je nooit alles van tevoren kan inschatten en dat ik ook vaak nog wel momenten heb waarop ik denk "Dit kan ik beter opsplitsen in 3 losse functies".

[ Voor 16% gewijzigd door Morax op 03-02-2018 13:24 ]

What do you mean I have no life? I am a gamer, I got millions!


Acties:
  • +1 Henk 'm!

  • Tsunami
  • Registratie: Juni 2002
  • Niet online
  1. Leer object-georiënteerd programmeren
  2. Zoek PHP design patterns op en leer die te gebruiken
  3. Leer werken in een framework, Symfony heeft bijvoorbeeld goede documentatie en regelmatig blog posts over nieuwe features
Dit kan je zelf allemaal op internet opzoeken.

[ Voor 3% gewijzigd door Tsunami op 03-02-2018 13:36 ]


Acties:
  • +1 Henk 'm!

  • epic007
  • Registratie: Februari 2004
  • Laatst online: 25-08 11:27
Kijk eens naar Domain Driven Design

En zoek verder naar Clean Code van Robert C Martin. http://blog.cleancoder.com/

En.. kijk inderdaad ook naar andere frameworks en OO programmeertalen.

Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • johnkeates
  • Registratie: Februari 2008
  • Laatst online: 04-07 16:30
Dit is een vrij algemene vraag die ook wel vaker beantwoord is. Het komt nagenoeg altijd neer op "Hoe leer ik programmeren".

Programmeren is weinig afhankelijk van de taal die je gebruikt of de code die je uiteindelijk typt, en is veel meer gebaseerd op bewezen concepten, paradigma's en workflows.

Stel dat je in elk geval procedureel en object-georienteerd snapt, wat basis hebt in architectuur en engineering, dan kan je al heel wat zelf doen. Een introductie in data structuren en wat algoritmen kan ook geen kwaad.

Belangrijke: Kan iedereen leren programmeren?

Advies programmeercursussen in Nederland
werken in de ICT waar te beginnen
Niet kiezen voor een taal, vanwege de tooling?
Java vs .NET?
Programmeren hoe en wat?
Apps bouwen, welke software?
Effectief Leren ontwikkelen in C#
Welke taal beste beginnen te leren als beginner?
waar te beginnen met prpfielen site
[objective c] Waar te beginnen, beste om snel te leren.
Ik wil leren programmeren

Begin in elk geval bij het begin: als je echt wil leren programmeren zal je eerst moeten leren het concept van een 'programma' los te zien van code. Als je zo ver bent kan je een OO-type (object-oriented type) taal willekeurig uitwisselen voor een ander. Zo zal je bijvoorbeeld in minuten kunnen switchen tussen Python, Java, C# zonder daar veel moeite voor te doen.

Het zit hem dan verder nog voor dagelijks werk in de investering in tooling. Als je standaard Git gebruikt en iemand opeens met iets ranzigs aan komt zetten als CVS, TFS of perforce clearcase dan zal je je even achter de oren krabben waarom de tools opeens ruk zijn, maar je manier van programmeren is daar niet afhankelijk van. Hetzelfde met editors en IDE's. Stel dat je Sublime Text met minimale plugins gewend bent en iemand komt opeens met een stront trage Atom aanzetten, dan zal dat ook niet de leukste ervaring zijn. Net als met IntelliJ vs. Visual Studio of zaken als NetBeans en Eclipse. Allemaal slechts gereedschap die in meer of mindere mate alleen je snelheid beinvloeden, niet wat je uiteindelijk kan.

Als je nog wat ingangen zoekt om bepaalde concepten of algoritmen te vinden, kijk bijvoorbeeld in de zijbalk op: Wikipedia: Software development zodat je bijv. zaken als TDD, DDD, MVC, MVVM enz. even kan opzoeken. En kijk halverwege deze pagina: Wikipedia: Sorting algorithm voor wat sorteer algoritmen. Genoeg om je even in te verdiepen zodat je wat meer zicht krijgt op wat programmeren inhoudt.

[ Voor 40% gewijzigd door johnkeates op 04-02-2018 16:05 ]


Acties:
  • 0 Henk 'm!

  • mcDavid
  • Registratie: April 2008
  • Laatst online: 09-09 17:48
downtime schreef op zaterdag 3 februari 2018 @ 10:20:
[...]

In zijn geval gaat een framework hem echt niet helpen. Wat hij mist is formele training om de basics van goed ontwerp te leren. De oplossing is dan ook: Een opleiding gaan doen of een hele stapel goede boeken gaan lezen.
Niet helemaal mee eens. Je kunt een hoop leren door af te kijken hoe anderen iets doen. En dan zijn frameworks zoals Symfony of Laravel, waar goed over nagedacht is, een goed voorbeeld.

Of dat genoeg is zal van persoon tot persoon verschillen. Waarschijnlijk kun je idd veel sneller (of misschien zelfs meer) leren van een goeie opleiding/stage/traineeship, maar het is echt niet de enige manier om nog vooruit te komen.

Acties:
  • 0 Henk 'm!

Verwijderd

-

[ Voor 99% gewijzigd door Verwijderd op 19-10-2019 15:14 . Reden: Leeg ivm privacy ]


Acties:
  • 0 Henk 'm!

Verwijderd

Gooly schreef op zaterdag 3 februari 2018 @ 10:12:
Zijn er mensen die me met tips, truuks, advies kunnen helpen om te starten met code planning en architectuur? (In mijn geval betreft het dus PHP) Waarschijnlijk ben ik met enkele relevante termen al enorm geholpen, omdat ik dan een richting heb.
Die fase voorafgaand aan het daadwerkelijk bouwen met code is iets waar ik heel graag in wil duiken, maar ik weet niet waar ik moet beginnen. Ik ben inmiddels een paar vruchteloze Google zoek sessies verder. Waar ik naar op zoek ben zijn eigenlijk gewoon een paar relevante termen of verwijzingen waar ik kan beginnen.

De achtergrond
Ik ben volledig autodidact en daardoor heb ik een nogal grillig "kennis en vaardighedenprofiel" Er zijn dingen die ik bijna slapend zou kunnen doen, maar er bestaan ook heel voor de hand liggende vaardigheden die ik niet heb. Geen opleiding van betekenis hier. Ik heb mezelf alles ad-hoc/on demand eigen gemaakt. Als er iets nodig was ging ik op zoek hoe ik dat het beste aan kon pakken en vanaf dat moment wist en kon ik het dan.

En dat heb ik jarenlang gedaan met behulp van Notepad++, een FTP client, webhosting en mijn browser inspector, verder niks. Sinds een dik jaar ben ik alles wat professioneler aan het aanpakken om het hobbyisten niveau wat te ontstijgen. En daarom werk ik nu alweer een poos met een IDE (PHP Storm), doe alles op een zelf ingerichte dev servertje op een VM. Ik werk vanuit een GIT repository en ben veel kritischer op mijn eigen code geworden; het is niet langer voldoende dat het werkt, het moet ook veilig en efficient werken.

Maar die voorbereidende stap, voordat ik mijn PHP Storm opstart en code in ga voeren mis ik ernstig. En het is dus ook helemaal leeg hoe ik daar mee moet beginnen. Ik wil af van dat al code typend denken: "Nee wacht, ik haal dit hele stuk hier weer weg en dan stop ik het in een functie, want ik heb het straks nog ergens anders nodig." En zodra ik dat dan heb gedaan "Damn, ik had het beter in die class kunnen zetten, want het is daar gewoon een logisch onderdeel van"

Het zou me zoveel tijd en energie schelen als ik vooraf wist hoe ik de code op ga bouwen en organiseren. Daar moeten vast beproefde methodieken, tools, of artikelen over bestaan die ik nog niet heb kunnen vinden.
Dit is de structuur die school ons aangeleerd heeft:

1 Maak een ontwerp voor een web applicatie, schets hoe de app er uit komt te zien etc.
2 Realiseren, begin met coderen/programmeren
3 Implementeren, zet de app online
4 Onderhouden, als er enige onderhoud nodig is of een nieuwe versie gelanceerd moet worden

Bedrijven gebruiken frameworks. Een framework is al een soort basis die voor je is gebouwd waar je gebruik van maakt. Boven op die basis ga je aan de slag en maak je de app verder af.

Om een framework te leren, er zijn er tientallen.., moet je eerst kunnen programmeren en weten hoe een app meestal in elkaar zit. Ook moet je wat ervaring hebben met het schrijven van object oriented code, dat is een manier van programmeren. En om weer object oriented te kunnen programmeren moet je de basis kennen van coderen, dus wat een variabele is, wat een array is, wat een functie is, wat een classe is, hoe een database werkt, hoe je een programma schrijft, hoe je een grafische gebruikers interface maakt etc.

Het is dus vooral veel leren. Het duurt ongeveer 3-4 jaar gemiddeld om de basis van het vak te leren. En het duurt nog eens 7-10 jaar werken bovenop je studie om aan de top te komen van de ladder.

Acties:
  • +1 Henk 'm!

  • kwaakvaak_v2
  • Registratie: Juni 2009
  • Laatst online: 02-06 12:29
Je school mist nog stap 1.5, maak een technisch ontwerp. Schrijf voor jezelf en je team op HOE dingen moeten werken, maar ook hoe je dingen wilt implementeren.

Bedrijven gebruiken niet altijd frameworks, en frameworks zijn ook geen heilige graal.

Driving a cadillac in a fool's parade.


Acties:
  • +2 Henk 'm!

  • pottink
  • Registratie: Augustus 2010
  • Laatst online: 12-09 13:57
Schrijf eerst degelijk eens uit wat je applicatie bevat en moet kunnen. De analysefase is echt zeer belangrijk.

Ga daarna eens nadenken hoe je dit wil gaan implementeren? Wat heb ik nodig in mijn werkomgeving? Welke technologieën zal ik nodig hebben?

De architectuur van je app is ook zeer belangrijk, neem zeker eens een kijkje tussen alle verschillende design patterns en code structure. Definieer je domein goed.

Maak gebruik van frameworks, Symfony is een zeer goede keuze voor webapplicaties. Hiermee bespaar je tijd omdat je het wiel niet opnieuw hoeft uit te vinden.

Acties:
  • +1 Henk 'm!

  • Gooly
  • Registratie: Juli 1999
  • Laatst online: 14-05 17:46

Gooly

Wie? Ik?

Topicstarter
X_lawl_X
90% van wat ik bouw zijn WordPress themes en plugins en daar gebruik ik nooit een framework bij. Maar ik heb laatst even naar Laravel zitten kijken en volgens mij is het inderdaad goed om daar ook eens mee aan de gang te gaan, gewoon buiten WordPress om. Het werkt volgens het MVC model (wat in WordPress helemaal niet gebeurt) en het dwingt me in een bepaalde structuur te werken en denken. Want bij mij is het met oop niet anders: hoe organiseer ik mijn classes en wat stop ik in een classe en wat stop ik in een (procedurele) functie. Het lijkt dus een goede manier te zijn om wat structuur in mijn denken en werken te krijgen.

Morax
Ik had nog nooit van UML gehoord moet ik zeggen. Daarmee krijg ik heel bruikbare Google resultaten.
Dat is dus zo'n term waar ik mee aan de gang ga.
En inderdaad is mijn streven ook niet om nooit mee al code kloppend te realiseren: "Dat kan beter op een andere manier". Maar de mate waarin het bij mij voorkomt is voor veel verbetering vatbaar :)

Tsunami
Dat klinkt inderdaad als een heel goeie optie. Zoals ik hierboven ook al bij X_lawl_X opmerkte. Bovendien is leren door te werken in een framework iets wat me heel goed afgaat. Een "klassieke manier" van leren; boeken uit je hoofd leren en regels toepassen hebben bij mij nooit gewerkt. Dat blijft er hier niet in zitten (Vandaar geen enkele relevante vooropleiding hier, een IQ van 135, en met pijn en moeite een LBO diploma met een cijferlijst vol zesjes)

downtime
Boeken, graag! Heb je tips?
Zoals ik hierboven ook beschreef leer ik het beste door de dingen gewoon te gaan doen, en 'klassikaal' uit boeken gaat me niet goed af. Maar ik gebruik boeken wel graag als referentie en daar grijp ik ook graag op terug.

epic007
Zoals je hierboven kan lezen ben ik het met je eens wat betreft oop en een framework.
En bedankt voor de links! Ik ga ze doorspitten.

johnkeates
"Programmeren is weinig afhankelijk van de taal die je gebruikt of de code die je uiteindelijk typt, en is veel meer gebaseerd op bewezen concepten, paradigma's en workflows." Kijk, dat helpt me om uit de kluwe te stappen die ik om me heen zie en het overzicht terug te krijgen. En 'data structuren' is weer zo'n prachtig keyword waar ik mee verder kan.
En wat een informatie alleen al op GoT, dat had ik niet verwacht.
Maar ik ga niet op je hele reactie in, want wauw, wat een informatie. Hier kan ik dus echt mee aan de slag.

mcDavid
"Je kunt een hoop leren door af te kijken hoe anderen iets doen. En dan zijn frameworks zoals Symfony of Laravel, waar goed over nagedacht is, een goed voorbeeld."
Inderdaad, dat is hoe het voor mij persoonlijk het beste werkt.

CurtPoindexter
'design patterns' weer een keyword waar ik mee verder kom. (Het klinkt als een heel gewoon zoekwoord, waarom heb ik die niet geprobeert? ;))

owlwithbow, kwaakvaak_v2 en Blofeld
Duidelijke, puntgewijze onderwerpen en stappen. Dat werkt perfect voor mij. Hiermee kan ik het overzicht behouden en vaststellen of alles aanwezig is wat ik nodig heb.

All
Enorm bedankt voor jullie geweldige input. Ik kan hier dus echt mee vooruit (Al is het wel even ademhalen voordat ik die enorme berg informatie induik haha) Ik ga dit topic in mijn bookmarks gooien want ik ga hier nog regelmatig terugkeren om terug te lezen wat er nu ooka lweer werd gezegd.
Ik kan weer vooruit.

Toch nog een aansluitende vraag: Ik lees met name Laravel en Symfony als aanbevolen frameworks.
Hoe zit het met de leercurve van die twee? Mezelf kennende weet ik dat het me beter lukt om bij wijze van spreken al relatief snel "Hello World" voor elkaar te krijgen en dan steeds "resultaatje-op-resultaatje" bouw tot het gewenste niveau (Tot nu toe heb ik dat met alles zo gedaan), dan dat ik eerst een paar maanden in de documentatie en boeken moet, om dan in één klap een complete applicatie neer te zetten.
(Ok, een beetje overdreven, maar het is een illustratie voor mijn manier van leren ;) )

See that's the trouble with reality, it's taken far too seriously.


Acties:
  • 0 Henk 'm!

  • Orthodroom
  • Registratie: December 2014
  • Niet online
Gooly schreef op woensdag 7 februari 2018 @ 17:04:
Toch nog een aansluitende vraag: Ik lees met name Laravel en Symfony als aanbevolen frameworks.
Hoe zit het met de leercurve van die twee?
Als PHP autodidact die toch vooral ook hobbyistische bezig was vond ik Laravel enorm gemakkelijk. Ik had in het verleden ook wel eens naar Yii gekeken, maar dat al snel weer opzij gezet.
Laravel is erg fijn en ik zou geen website meer bouwen zonder.

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Als je interesse hebt in design patterns zou ik Laravel links laten liggen. Het is ongetwijfeld snel op te pakken en geeft snel resultaat maar het leert je niet echt dingen op de "nette" manier te doen omdat alles erg los aan elkaar hangt en veel aannames does. Symfony Framework aan de andere kant is wel erg van de design patterns en vrij stricte OOP wat de leercurve hoger maakt maar denk ik veel meer inzichten geeft.

Acties:
  • 0 Henk 'm!

Verwijderd

-

[ Voor 99% gewijzigd door Verwijderd op 19-10-2019 15:14 . Reden: Leeg ivm privacy ]


Acties:
  • 0 Henk 'm!

Verwijderd

Volgende probleem is: wat doe je met complexe zaken. Doe je die in controllers? In je view?
Je kan hier ook gewoon een class voor schrijven en die instantieren op de plek waar je hem nodig hebt object->complex() uitvoeren en tada, het resultaat komt eruit.

Acties:
  • 0 Henk 'm!

  • Tsunami
  • Registratie: Juni 2002
  • Niet online
@Verwijderd Nee. Sowieso ga je geen objecten in je view instantiëren, dat hoort in de backend thuis. En als je object dependencies heeft ga je die ook niet iedere keer instantiëren, daar heb je dan weer dependency injection voor.

Acties:
  • 0 Henk 'm!

  • Stoelpoot
  • Registratie: September 2012
  • Niet online
Verwijderd schreef op donderdag 8 februari 2018 @ 13:17:
[...]


Je kan hier ook gewoon een class voor schrijven en die instantieren op de plek waar je hem nodig hebt object->complex() uitvoeren en tada, het resultaat komt eruit.
En dat is dus juist de fase de de TS wil ontgroeien :+ Dit werkt leuk, totdat je 20 van die classes hebt die losjes aan elkaar hangen.

Acties:
  • 0 Henk 'm!

  • incaz
  • Registratie: Augustus 2012
  • Laatst online: 15-11-2022
Ik zou inderdaad zeker eens kijken naar Symfony, dat al een goed uitgangspunt biedt (en bv via de generators ook al een directorystructuur geeft en de bestanden die je nodig hebt, wat al een goed begin is) en daarnaast al vanaf de opzet rekening houdt met tests / TDD en MVC. De documentatie geeft daar ook uitleg over, en geeft duidelijke voorbeelden die ook werkelijk veel aanknopingspunten geven. Er zijn ook duidelijke voorbeelden over hoe je bestaande classes kunt extenden met je eigen code.

Plus je kunt zien hoe het framework zelf is opgebouwd. (Ok, met het framework vond ik dat wat veel om te verwerken, maar een aantal specifieke onderdelen waren wel zeer leerzaam.)

Dat dan samen met de theoretische achtergrond die al genoemd werd, en dan kun je wel verder komen, wat veel aanknopingen biedt over de organisatie van code, en niet zozeer het programmeren zelf.

Never explain with stupidity where malice is a better explanation


Acties:
  • +1 Henk 'm!

  • Tjolk
  • Registratie: Juni 2007
  • Laatst online: 12-09 15:09
Ik moet eerlijk zeggen dat toen ik een jaar of 5-6 geleden voor het eerst met CodeIgniter aan de slag ging, ik wel een heel stuk gestructureerder ging werken. Hoewel CI zo flexibel als een tuinslang is, geeft het je wel alle kaders om via MVC te werken. En uiteindelijk is dat voor mij weer de opstap geweest die ik nodig had om te begrijpen hoe Symfony in elkaar steekt. Ik werk daar niet dagelijks mee, maar kom er wel zo nu en dan mee in aanraking.
Al moet gezegd worden: als ik nu weer opnieuw een framework zou kiezen zou ik wellicht niet met CI aan de slag gaan maar eerder op de Laravel trein stappen. Net zoals met IDE en VCS-en is een framework ook gewoon maar een tool en erg afhankelijk van je voorkeuren en usecases.

Zoals je wellicht weet ben ik net zo'n autodidact als jij. Zonder Koning Google was ik niet geweest waar ik nu ben. Maar ik heb ook geluk gehad met een ervaren collega met wie ik goed kan samenwerken en ben gezegend met een brein wat gauw structuurtjes oppikt en daaraan vast hangt.

MVC is trouwens niet iets wat volledig in beton gegoten is. De scheidslijnen zijn zeker in PHP land redelijk grijs. Maar houdt met name in het achterhoofd dat je in de view alleen maar aan je presentatie werkt en in je model je data verwerkt. Oftewel: probeer je logica zoveel mogelijk te weren uit de view en spreek al helemaal niet de database aan vanuit je view.

Maar ook hiervoor geldt: MVC is een tool. Een geweldige en ik zou niet graag zonder willen, maar het is en blijft een tool. Je kunt prima succesvol zijn zonder, kijk maar naar Wordpress. Ik krijg rode bultjes als ik ermee werk, maar niemand kan ontkennen dat Wordpress een succesvol product is.

Je eigenlijke vraag was: hoe plan ik mijn code en architectuur? Persoonlijk steek ik steeds meer tijd in dat eerste stukje: zo goed mogelijk helder krijgen wat de eisen en wensen zijn, van daaruit redeneren wat voor data er opgeslagen moet worden en welke relatie die data heeft, etc. Oftewel: een database model opbouwen. Vervolgens beginnen met de flows uitschetsen en van daaruit bepalen wat er nou eigenlijk gemaakt moet worden. Dan krijg je ook al gauw door wat je vaker nodig gaat hebben, wat je dus in functies gaat onderbrengen, welke views je nodig hebt en of daar ook weer herbruikbare zaken tussen zitten, etc.

Tjolk is lekker. overal en altijd.


Acties:
  • +1 Henk 'm!

  • Marcade
  • Registratie: April 2002
  • Laatst online: 12-09 12:43
Gooly schreef op woensdag 7 februari 2018 @ 17:04:
Tsunami
Dat klinkt inderdaad als een heel goeie optie. Zoals ik hierboven ook al bij X_lawl_X opmerkte. Bovendien is leren door te werken in een framework iets wat me heel goed afgaat. Een "klassieke manier" van leren; boeken uit je hoofd leren en regels toepassen hebben bij mij nooit gewerkt. Dat blijft er hier niet in zitten (Vandaar geen enkele relevante vooropleiding hier, een IQ van 135, en met pijn en moeite een LBO diploma met een cijferlijst vol zesjes)
Heel erg herkenbaar. Ben zelf een 'highschool dropout' met een soortgelijk IQ; simpelweg omdat als iets me niet interesseert, het gewoonweg niet blijft hangen in m'n hersenen.

Ben nu ook ongeveer 2 jaar bezig met PHP (maar heb sinds mijn jeugd al af en aan geprogrammeerd en heb ook tijdje lang gewerkt als developer. Net als Ger, heb ik veel geleerd op de professionele werkvloer van meer ervaren collega's) Boeken doorlezen lukte me nooit echt; maar soms loop ik wel tegen een probleem aan en denk ik 'zou dat beter kunnen?' en dan ga ik oplossingen zoeken in boeken of het internet raadplegen.

Zelf heb ik geleerd dat ik mijn neiging naar 'perfectionisme' van me af moet zetten, want anders zou ik never en nooit een project afronden; er zijn *altijd* wel manieren om iets beter te doen. Ik probeer nu zelf eerst gewoon iets neer te zetten wat werkt, en dan te refactoren waar mogelijk. En ja het kan gebeuren dat, door een matige foundation misschien hele dingen geschrapt moeten worden, maar zo bouw je ervaring op en zo leer je ook waarom bv. bepaalde 'design patterns' zoals MVC bestaan.

Uiteindelijk gaat het erom dat je lol hebt en voldoening voelt over wat je bouwt,

Acties:
  • 0 Henk 'm!

  • Gooly
  • Registratie: Juli 1999
  • Laatst online: 14-05 17:46

Gooly

Wie? Ik?

Topicstarter
Even OT
Marcade schreef op vrijdag 9 februari 2018 @ 02:33:
[...]simpelweg omdat als iets me niet interesseert, het gewoonweg niet blijft hangen in m'n hersenen.[...]
Haha, een soulmate. Zo herkenbaar. Een relatief simpel dingetje dat ik moet doen of bestuderen, maar waar ik het belang niet van in zie, of wat me absoluut niet boeit of interesseerd komt er simpelweg niet in. Al dwing ik mezelf om er uren aan te besteden, een kwartier daarna is het weg, alsof ik er nooit iets over heb gelezen.
Boeit het me wel, vind ik het echt interessant, zelfs al is het relatief onbelangrijk dan kan ik daar uren, dagen geboeid in duiken.

En dan krijg je dus dat ik bv bij wijze van spreken in één en dezelfde WordPress discussie op het ene moment met een oplossing kan komen voor een enorm gecompliceerd probleem waar iemand al weken mee worsteld, en twee minuten later met een gezicht als een vraagteken mee zit te luisteren als het gaat over een heel voor de hand liggende optie die blijkbaar iedereen kent, maar waar ik blijkbaar nog nooit van heb gehoord :)

Meer vertaald naar mijn vraagstelling hier is het probleem dan een beetje dat iets als PHP developen bestaat uit heel veel verschillende disciplines. Dus het is bij mij niet zo dat PHP development een onderwerp op zich is dat me in zijn geheel boeit. In sommige van de aspecten kan ik me helemaal verliezen en vliegt de tijd, en andere aspecten vind ik dan weer minder boeiend. Maar dan zie ik dus weer wel dat ze enorm belangrijk zijn, en dan heb ik dus een probleem ;)

See that's the trouble with reality, it's taken far too seriously.


Acties:
  • 0 Henk 'm!

  • Gooly
  • Registratie: Juli 1999
  • Laatst online: 14-05 17:46

Gooly

Wie? Ik?

Topicstarter
Ger schreef op donderdag 8 februari 2018 @ 16:45:
zo goed mogelijk helder krijgen wat de eisen en wensen zijn, van daaruit redeneren wat voor data er opgeslagen moet worden en welke relatie die data heeft, etc. Oftewel: een database model opbouwen. Vervolgens beginnen met de flows uitschetsen en van daaruit bepalen wat er nou eigenlijk gemaakt moet worden.
Dat is een uitgangspunt waar ik heel goed mee kan beginnen en wat me goed helpt. Ik ben namelijk altijd een 'beeldend denker' geweest (zoals dat schijnt te heten) en om diverse processen en fases met een zekere abstractie succesvol te doorlopen, heb ik in ieder geval twee dingen nodig: Een heel concreet, beeldend vertrekpunt en een heel concreet beeldend doel. En dit helpt daar enorm bij.

En wat je zegt over MVC, ik heb het nog nooit gebruikt of toegepast, maar het heeft me wel geholpen om mijn code te structureren. Als ik nu bv een WordPress theme of plugin schrijf, bepaal ik wel vooraf wat bij elkaar hoort en hoe ik dat onderling het beste met elkaar kan verbinden. En zo kwam eigenlijk al vanzelf dat ik alle database activiteiten in een eigen classe ging plaatsen en dat ik backend functionaliteiten van frontend functionaliteiten ging scheiden. Ik gebruik dat MVC model dus wel als een soort van 'inspiratie' om mijn applicaties volgens een logische en onderhoudbare manier te bouwen.

Al lijkt bij mij alleen de 'M' nog het meeste op de originele M van MVC :)
De 'view' gaat bij mij eigenlijk zelden tot nooit via objecten, dat is in de meeste gevallen een bestand met allerlei procedurele functies die allerlei HTML parsen, en de rest, tja, dat zal dan wel de controller zijn :)

[ Voor 0% gewijzigd door Gooly op 09-02-2018 09:59 . Reden: Typo gecorrigeerd ]

See that's the trouble with reality, it's taken far too seriously.


Acties:
  • 0 Henk 'm!

  • Gooly
  • Registratie: Juli 1999
  • Laatst online: 14-05 17:46

Gooly

Wie? Ik?

Topicstarter
Tnx again. Wat mijn Laravel vs Symfony vraag betreft is het duidelijk wat de voors en tegens zijn.
Ik denk dat in mijn situatie Laravel meer bij mijn manier van 'zelf leren' past dan Symfony, maar dat Symfony weer dichter staat bij hetgeen ik wil leren. Nu is het aan mij om te gaan beslissen welke van die twee voor mij de hoogste prioriteit heeft.

Ik ga dat eens goed naast elkaar leggen. Maar ik denk wel dat Laravel met een kleine voorsprong begint ;)

See that's the trouble with reality, it's taken far too seriously.


Acties:
  • 0 Henk 'm!

  • pottink
  • Registratie: Augustus 2010
  • Laatst online: 12-09 13:57
Laravel heeft een lagere "instap", maar al gauw zal je merken dat Symfony een betere keuze is toekomstgericht. Been there done that. Als je echt robuuste en enterprise grade software gaat maken met LTS versies in het achterhoofd ben je echt wel beter af met Symfony. Alles zit beter in elkaar dan Laravel, wat geschreven is door die eigenwijze Otwell. Ik mis hier op Tweakers eigenlijk een centrale Symfony topic.
Pagina: 1