assureDirectory is niks naar mijn mening. Er moet nog iets zijn waarmee we aangeven wat we verzekeren, namelijk dat hij bestaat.
En vind je assureDirectoryExists echt al te lang? Dan kun je er assureDirExists ofzo van maken. Maar echt lang is ie nog niet...
Denk maar eens aan mysql_real_escape_string, data_interval_create_from_string, array_change_key_case en vele andere core functies...
Als ik je omschrijving goed begrijp, is het doel van de functie om een directory te maken. Het kijken of die directory al bestaat is daarin bijzaak.
Eventueel zou je met een return value kunnen aangeven of de aan te maken directory al bestond (dus bijvoorbeeld 0 = niet gelukt, 1 = aangemaakt, 2 = bestond al)
Wat noem je lang? Ik probeer zelf m'n namen zo kort, maar wel zo duidelijk mogelijk te maken.
Ik ben er inmiddels achter dat assure eigenlijk ensure moet zijn, dus dan is het ensureDirectory. Maar waarom wil jij er exists bij?
Je garandeert een directory. Dan denk ik dat het duidelijk is dat je garandeert dat die directory bestaat. Veel meer dan dat kan een directory niet doen. Als ik tegen jou zeg "Wouter, ik garandeer jou een huis." dan gaat het om een huis dat bestaat. Ik kan ook zeggen "Wouter, ik garandeer jou een huis dat bestaat." Komt op hetzelfde neer alleen is wat langer.
[size=xsmall]Toevoeging op 01/01/2014 19:49:17:[/size]
>> Als ik je omschrijving goed begrijp, is het doel van de functie om een directory te maken. Het kijken of die directory al bestaat is daarin bijzaak.
Nee niet helemaal. Bij een makeDir functie maak je altijd een nieuwe directory. In mijn geval kan het zijn dat de directory al bestaat, dan moet er dus juist geen directory gemaakt worden.
En vind je assureDirectoryExists echt al te lang? Dan kun je er assureDirExists ofzo van maken. Maar echt lang is ie nog niet...
Denk maar eens aan mysql_real_escape_string, data_interval_create_from_string, array_change_key_case en vele andere core functies...
Dat is een beetje een omgekeerde argumentatie: omdat er al zoveel lange functienamen zijn is het dus geen probleem om een lange functienaam aan te maken?
Een van de nadelen van PHP is juist dat de gemiddelde naam van de core-functies zo lang is...
[offtopic]Nee, willem. Ik wou alleen aangeven dat het wel mee viel met de lengte, aangezien je als PHP programmeur dat toch al gewent bent. PHP heeft immers geen functies als to_a (wat voor de meeste mensen compleet nikszeggends zal zijn).
>> Als ik je omschrijving goed begrijp, is het doel van de functie om een directory te maken. Het kijken of die directory al bestaat is daarin bijzaak.
Nee niet helemaal. Bij een makeDir functie maak je altijd een nieuwe directory.
In welke wet staat dat beschreven? ;-)
Er zijn twee manieren om naar een functie te kijken: actiegericht en resultaatgericht. Jij kijkt er actiegericht naar. Maken is maken, en checken is checken. Ik kijk resultaatgericht: aan het eind van de procedure moet er een directory zijn. Bestaat 'ie al? Mooi zo, dan hoef ik niets te doen.
Je zou zelfs helemaal over the top kunnen gaan door een parameter mee te geven waarmee je bepaalt of het al bestaan van de target directory een fout oplevert of niet.
Wanneer je je functie ensureDir of zo gaat noemen, introduceer je naar mijn mening juist onzekerheid over wat de functie doet. De term "ensure" suggereert namelijk dat de functie ervoor zorgt dat de opgegeven target altijd een directory is. Stel nu dat je de functie aanroept met de naam van een al bestaande file: ensureDir('readme.txt'); dan zou dat suggereren dat aan het eind van de functie de file readme.txt is verwijderd en er een directory readme.txt is aangemaakt. Een naam als makeDir vind ik dan juist beter beschrijven wat de functie doet.
Ik snap wel enigszins wat je bedoelt, maar PHP heeft wat rare fratsen. Stel bijv. ik wil een bestand kopiëren van map A naar map B. Dan wil ik kunnen zeggen copy('/pad/A/file.php', '/pad/B/file.php');
Nu is het vervelende dat die copy functie geen directories kan aanmaken. Oké. Dan kan ik gaan controleren of directory B bestaat, en zo niet maak dan eerst directory B aan. Dat vind ik niet handig.
Ik wil mijn copy functie dus zo maken dat ie, indien nodig, een directory kan aanmaken. Stel nu dat ik makeDir zou gebruiken, dan krijg je zoiets:
<?php
public function copy($file, $destination) {
makeDir(dirname($file));
copy($file, $destination);
}
?>
Als ik deze functie zou zien, dan zou ik dan interpreteren alsof er altijd een directory wordt aangemaakt, maar dat is niet zo, want dat is niet altijd nodig. Dit lijkt mij dan duidelijker:
<?php
public function copy($file, $destination) {
ensureDirectory(dirname($file));
copy($file, $destination);
}