“超级”私有方法的命名约定只能由某些调用者调用?

时间:2013-10-31 04:27:02

标签: c# naming-conventions

由于没有C#语言可以阻止类在该类中调用私有方法的任何地方,是否有一种标准的命名约定方法只能由另一个独占方法调用?

为什么呢?所以其他人不会不小心调用该方法(如果他们知道约定)。

例如,当我有递归方法时,我经常有另一种方法,我想成为该方法的独占调用者,那么每个人都应该直接调用该方法而不是我的递归方法。例如:

    private void FindPathToNode(Node currentNode, List<Node> visitedNodes, List<Node> path, int targetId, ref bool found)
    {
         ...
         FindPathToNode(node, visitedNodes, path, targetId, ref found);
    }

    private void FindPathToNode(Node startNode, int targetId)
    {
        var visitedNodes = new List<Node>();
        var path = new List<Node>();
        var found = false;
        FindPathToNode(startNode, visitedNodes, path, targetId, ref found);
    }

我喜欢引导下划线的想法,因为在其他语言中它表示“私有”,例如Python(尽管它只在类级别指示私有)。

        private void _FindPathToNode(Node currentNode, List<Node> visitedNodes, List<Node> path, int targetId, ref bool found)

但是,已经有一个广泛使用的惯例吗?

1 个答案:

答案 0 :(得分:1)

我能找到的最接近的,Microsoft提出的命名约定是Core

示例:

public Add(Item item)
{
  AddCore(item);
}

public Replace(Item item1, Item item2)
{
  RemoveCore(item1);
  AddCore(item2);
}

另请参阅此相关问题:More private than private? (C#)