SchizoDuckie schreef op vrijdag 15 juni 2007 @ 10:33:
Ik zie het zo: Je hebt de 'puristen' die echt *alles* zo ver mogelijk uit willen normaliseren omdat ze dat gewend zijn vanuit bijvoorbeeld Java, of .Net, en de "let's get it done" mentaliteit van PHP programmeurs/scripters. In short, je kan dingen *heel* erg ranzig oplossen in PHP, maar je kan het ook héél erg ranzig oplossen in Java
Hiermee impliceer je dat mijn manier van werken waarschijnlijk langer zou duren. Dit is echter absoluut niet het geval. De DAO (Waarvan ik de implementatie hier niet heb staan) is in principe gewoon te genereren. Zoek bij google maar eens op php dao generator, maar je kunt hem ook zelf maken. Hiermee kun je vanuit je database model gewoon je classes en de DAO genereren. Database maken moet je sowieso doen en het genereren kost je vervolgens 2 seconden. De gegenereerde code kun je vervolgens net zo transparant gebruiken als ik hierboven gedaan heb. Ik neem niet aan dat iemand het met mij oneens kan zijn als ik zeg dat mijn code hierboven erg duidelijk, overzichtelijk en goed onderhoudbaar is.
De hele kunst aan het 'misbruiken' van een array is dat het geen misbruiken is. Jij hebt het over structs, hashes of objecten, maar in PHP is een array eigenlijk een mix van alle 3.
In java heb je de hasmap, linkedhashmap, linkedlist, treelist, weet ik veel wat voor meuk allemaal maar daar wil je in een scripttaal vaak helemaal niet over na denken en dat hoeft dan ook niet aangezien je de mogelijkheid hebt om key/value pairs op te geven waarbij de KEY een STRING is.
In deze context zie ik structs en objecten eigenlijk als 1. Beide is het een 'eigen type definitie'. De andere twee gebruiken zijn en map en een lijst. Wat ik met mijn oorspronkelijke opmerking wil zeggen is dat het eerste gebruik gewoon misbruik is van de mogelijkheden. Dat iets met een taal kan, betekent nog niet dat het daarom ook maar zo moet?
De meuk in java en dotnet is trouwens helemaal niet zo lastig. Zoals ik eerder al aangaf zijn er twee typen. Iets met key->value en iets met een lijst (dus alleen values). Vervolgens heb je in Java en .net hier verschillende implementaties van omdat de ene implementatie in de ene situatie efficienter is en de andere in een andere. Van de buitenkant zijn het echter allemaal of een List, of een Map, dus zo ingewikkeld is dat helemaal niet. Het enige waar je, en dat geldt ook voor een scripttaal, over na moet denken is of je een lijst of een map nodig hebt.
Verder ben jij waarschijnlijk ook een voorstander van setXXX en getXXX methods, terwijl ik daar een hekel aan heb om dat te definieren voor elke property als ik dat misschien helemaal niet nodig heb. Dan gebruik ik daar of een standaard objectje of misschien wel een array met key/value pairs voor en een __set() / __get() combinatie.
In crimson heb ik ooit een macro gemaakt waarmee ik automatisch van een propertie een getter en setter kon maken. 1 druk op de knop en klaar. Luiheid hoeft dus helemaal geen argument te zijn terwijl je code er wel een stuk robuster van wordt. Zou je een vergelijkbare macro hebben dan heb je dat na 1 tikfout in een label al weer terug verdient.
Het grote verschil zit 'm denk ik in het feit dat je hier met scripts werkt ipv gecompileerd/memory-optimized spul, en het blijft een kwestie van wat je het prettigst vindt werken imo.
Of je nu met gecompileerd spul of script spul werkt (om jouw woorden te gebruiken) maakt helemaal niet uit hoe je werkt. In beide gevallen schrijf je code en heb je het liefst dat deze goed is, makkelijk onderhoudbaar en overzichtelijk.
Ik vind het iig niet prettig dat ik in java niet gewoon een key/value pair wat ik zelf kan kiezen in een hashmap kan stoppen maar dan weer LabelValueBeans moet aanmaken of gebruiken, dát vind ik weer misbruik van objecten en cpu cycles...
Wat is dit voor onzin? Je kunt je hashmap met vele types definieren. Je moet een zelf opgelegde beperking van struts niet doortrekken naar het hele platform. Ik heb het idee dat je je viewcode veel te ver je applicatie in laat komen. Maar goed, op basis van enkel het woordje LabelValueBean kan ik er natuurlijk weinig meer over zeggen

.
En druk over cpu-cycles zou ik me sowieso niet zo maken. Onderhoudbaarheid van je applicatie is met de huidige snelheidsmonsters een veel belangrijker kostentechnisch aspect.