无隐式设置项的变量名,没有隐含结构

时间:2010-02-21 21:57:49

标签: binary set conventions naming-conventions

这个问题将以特定的形式提出,但适用于更一般的问题,如何命名无序的集合项而不暗示任何类型的结构。

就图论而言,连通的无向图将包含通过边连接的顶点。

当创建一个边缘类,其中两个成员变量是顶点,表示边连接的两个顶点时,很难描述两个不包含某种形式的隐含结构的变量。

考虑 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; } 但那感觉很糟糕。

在不暗示任何形式的方向,排序或结构的情况下,什么名称符合这些变量的良好实践?

1 个答案:

答案 0 :(得分:1)

我会选择Edge { Vertex v1; Vertex v2; }。我不认为您的代码的用户会将数字后缀解释为顺序,而只是作为区分符。如果你的无序集合包含10或100个项目,例如多边形结构的情况怎么办?我确信最直观的解决方案是在命名项目时使用数字索引/后缀。