【发布时间】:2018-06-10 02:49:06
【问题描述】:
例如,在 PHP 或其他松散类型的语言中,我可以有一些这样的代码:
/* PSEUDOCODE based on PHP */
$selection = $this->getSelection($id);
/* Below code will not work in a strict language */
if (is_array($selection))
show_template($selection);//forwards *array* results to the view script
else
print $selection; //prints the *string* notice message
/* Returns either array or string */
/* return param doubles as a business-payload or error message */
function getSelection($id)
{
$result = $db->getResultsById($id);
if ($result) return $result;//array
else return "No results";//string
}
因为我可以用 PHP 和类似的语言做到这一点,是否意味着我应该这样做?
另一种方法是强迫自己编写类似的代码,例如,在 C++ 中,我将重新设计代码或创建数据结构以保持其类型。但我应该这样做吗?
【问题讨论】:
-
即使在 C++ 中,您也可以将任何内容转换为 void 指针并返回 - 但这并不意味着您应该这样做!这同样适用于 PHP。因为您可以返回混合类型,这并不意味着您应该这样做。干净的界面使您的代码更易于维护和容错
-
这是 PHP 开发的总体方向(参数和返回值类型命中、标量的严格类型等)。它通过静态分析让您更好地控制代码。
标签: php strict loose-typing