提问人:SeanDowney 提问时间:10/15/2008 更新时间:10/15/2008 访问量:2191
按具有布尔值的 id 索引的数组的最佳名称
Best name for array indexed by id with boolean value
问:
我痴迷于我使用的数组和变量的最佳名称,我会在同义词库、字典等中查找单词。
所以我试图命名这个数组/结构:
$nameMe = array(
'392' => TRUE,
'234' => TRUE,
'754' => TRUE,
'464' => TRUE,
);
它用于检查该 ID 是否具有特定属性,如下所示
if(isset($name[$id])) {
doSomething();
}
问题是我得到了非常长的变量名称,例如
$propertyNameArrayIdIndexed
关于如何更好地命名数组的这个特定函数的任何想法?或一般更好的名称
答:
propertyNameable、IspropertyNameable。
长变量名称没有错,只要它们描述变量正在做什么,而不是它是如何声明或定义的。
我会从变量名称中删除“Array”。
使用该数组的函数可以命名为:
IsPropertyAvailable?($id)
或者只是
有空吗?($id)
正确封装时。
因此,可以命名用于查询的关联数据结构
$availableIds
你希望你的代码读起来尽可能像简单的英语。用简单的英语来说,你最终会得到类似的东西;
如果汽车是红色的 做红色汽车的东西
因此,我的建议是避免在变量的命名中引入不必要的计算机术语('array'、'property'、'index' 等)。你的编程语言正在将“isset”强加给你。这很好,这清楚地表明你有一个布尔数组,这意味着你可以简单地说;
if( isset(红色[car_idx]) ) dosomething();
摘要:我认为数组应该简单地命名为您尝试测试的属性。如果属性的名称是一个不错的英语形容词,无论是否适用于名词,那么即使没有 isset(),数组的布尔性质也很明显。就这么简单;
红色[]、长方形[]、大[]
不是 IsRed[]、IsOblong[]、IsLarge[],因为除了 isset() 中的“Is”之外,额外的“Is”是多余的。
$hasProperty[$id]
或
$isSomething[$id]
属性到底是什么?
$isOdd[$id]
$isWriteable[$id]
$hasAssociatedFile[$id]
你的数组只包含吗?如果是这样,我会说将您的数据结构更改为如下所示:true
$availableIds = array(392, 234, 754, 464);
然后你的陈述更有意义:if
if (in_array($myId, $availableIds)) { ... }
评论
按变量的“角色”(在 UML 意义上)而不是它们的类型来命名变量。因此,变量的正确名称应该很大程度上取决于它的使用位置和方式。仅仅知道数据结构的类型并不足以给它一个恰当的名字。因此,假设您有一个属性枚举,每个属性都可以呈现为图标。我会省略任何类型的指示,并声明它类似于 .Set<Property> displayableIcons
即使您使用的是匈牙利语表示法,实际类型也不应该是名称的一部分,但一些类型限定符或非正式子类型的指示就可以了,例如 .String b64JpgMugshot
我只是使用 dah[]。
我同意其他评论者的观点,即这个问题似乎缺乏适当的上下文来正确简洁的命名,但是像 able['foo']、enabled['bar'] 或 ready['ack'] 这样的通用方法可能会起作用。
评论