这个问题将以特定的形式提出,但适用于更一般的问题,如何命名无序的集合项而不暗示任何类型的结构。
就图论而言,连通的无向图将包含通过边连接的顶点。
当创建一个边缘类,其中两个成员变量是顶点,表示边连接的两个顶点时,很难描述两个不包含某种形式的隐含结构的变量。
考虑
class Edge{
Vertex v1;
Vertex v2;
}
要么
class Edge{
Vertex left;
Vertex right;
}
要么
class Edge{
Vertex a;
Vertex b;
}
{v1,v2}意味着顺序和大于2的可能大小,尽管边只有两端。
{a,b}类似于{v1,v2},仅替代不同的符号。
{left,right}或{up,down}暗示方向,当没有必要对图形进行任何空间参考时,这可能是反直觉的,因为原始图形是纯粹的抽象。
{start,end}适用于有向图,但在无向图中似乎是任意的。
我能考虑的最接近的是:
class Edge{
Vertex oneEnd;
Vertex otherEnd;
}
但那感觉很糟糕。
在不暗示任何形式的方向,排序或结构的情况下,什么名称符合这些变量的良好实践?
答案 0 :(得分:1)
我会选择Edge { Vertex v1; Vertex v2; }
。我不认为您的代码的用户会将数字后缀解释为顺序,而只是作为区分符。如果你的无序集合包含10或100个项目,例如多边形结构的情况怎么办?我确信最直观的解决方案是在命名项目时使用数字索引/后缀。