多维数组的变量命名(PHP)

时间:2010-11-09 15:40:00

标签: php multidimensional-array naming-conventions

我很难找到一个命名多维PHP数组的系统,因此通过查看变量名称,您可以获得有关多维数组结构的提示。

一个虚构的例子:

$task = array('who'=>'John', 'what'=>'wash the dishes', 'priority'=>10);
$calendar[$year][$month][$day][$task_id] = $task;

在这种情况下,我将其命名为“日历”,因为整个结构整体上具有简单的含义,但在大多数情况下,没有与单个词甚至现实生活概念的直接连接。另外,我在这里使用日期部分(年,月,日)作为示例,但通常我的键是整数数据库记录ID。

所以我想建立一个命名系统来描述这种关系:

"year X month X day -> list of tasks"

更一般地说:

"key1 x key2 x key3 x ... x key n -> items"

一种可能的命名惯例,使用一词,并将下划线作为键之间的分隔符:

$tasks_by_year_month_day = array(...); // items_by_key1_key2_key3

所以,保持相同的约定,我会写:

$tasks_by_month_day = $tasks_by_year_month_day['2010'];

$november2010Tasks_by_day = $tasks_by_year_month_day['2010']['nov'];

是否有标准或更简洁的方法来命名这种数组?

谢谢。

2 个答案:

答案 0 :(得分:1)

在可能的情况下使用描述性变量名称可以让人们更容易理解代码。然而,当名称变得太长并且可读性受损时,肯定会出现这种情况。

请记住,变量名的目的是使程序更容易理解。如果有关于不相关的数据的信息,则不应包含该信息。例如:

function getTasksByDate($year, $month, $day) {
    $tasks = getTasks();
    return $tasks[$year][$month][$day];
}

在这种情况下,谁愿意将$tasks重命名为$tasks_by_year_month_day?不仅清楚索引顺序是什么。此外,这个例子提出了抽象数据类型的想法。

使用抽象数据类型,您可以公开对任务结构进行操作的大量描述性函数名称。这意味着您真正需要关心索引顺序的唯一情况是在公开ADT的函数中。此时,您可以在文件顶部注释索引顺序。

简而言之,您不能希望在变量名中包含每一条信息。大多数时候,没有人想要每件作品。尝试利用当前上下文缩短变量名称并阐明总体目标。

答案 1 :(得分:0)

这可能是个人/公司的决定。我经常将它们命名为$lut_a_to_b(b的查找表为a)。它有助于使用示例结构为具有超过几行的变量编写注释。