Stavo passando alcune funzioni PHP e non ho potuto fare a meno di notare quanto segue:
<?php
function foo(&$var) { }
foo($a); // $a is "created" and assigned to null
$b = array();
foo($b['b']);
var_dump(array_key_exists('b', $b)); // bool(true)
$c = new StdClass;
foo($c->d);
var_dump(property_exists($c, 'd')); // bool(true)
?>
Notare la funzione array_key_exists()
e property_exists()
.
Nel primo, il nome della proprietà (chiave per un array) è il primo parametro mentre nel secondo è il secondo parametro. Per intuizione, ci si aspetterebbe che avessero una firma simile. Ciò può portare a confusione e il tempo di sviluppo può essere sprecato apportando correzioni di questo tipo.
Non dovresti usare PHP o qualsiasi altra lingua per rendere coerenti le firme delle funzioni correlate?