Tôi đã trải qua một số chức năng PHP và tôi không thể không chú ý những điều sau:
<?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)
?>
Lưu ý array_key_exists()
và property_exists()
chức năng. Trong cái đầu tiên, tên thuộc tính (khóa cho một mảng) là tham số đầu tiên trong khi ở cái thứ hai, nó là tham số thứ hai. Theo trực giác, người ta sẽ mong muốn họ có chữ ký tương tự. Điều này có thể dẫn đến sự nhầm lẫn và thời gian phát triển có thể bị lãng phí bằng cách sửa lỗi loại này.
Không nên PHP, hoặc bất kỳ ngôn ngữ nào cho vấn đề đó, xem xét làm cho chữ ký của các chức năng liên quan nhất quán?