2011-10-18 14 views
7

C# tiene una serie de convenciones de nomenclatura para los tipos de métodos comúnmente visto-:C# Convenciones de nomenclatura para funciones internas recursivas?

  • BeginFoo()/EndFoo() de métodos asincrónicos
  • TryGet()/TryParse() que devuelven false en lugar de lanzar una excepción
  • FooOrDefault() de métodos que devuelven default(T) en lugar de lanzar una excepción
  • IsFoo para indicadores booleanos

Me preguntaba, ¿hay alguno para métodos internos recursivos? p.ej. en this example from another Stack Overflow question:

public int CalculateSomethingRecursively(int someNumber) 
{ 
    return doSomethingRecursively(someNumber, 0); 
} 

// What to call this? 
private int doSomethingRecursively(int someNumber, int level) 
{ 
    if (level >= MAX_LEVEL || !shouldKeepCalculating(someNumber)) 
     return someNumber; 
    return doSomethingRecursively(someNumber, level + 1); 
} 

En C He visto gente utiliza foo(...) + foo_r(...) como una convención. Pero ¿qué tal en .NET?

+1

+1 Buena pregunta - Recuerdo que algunas de mis clases de la universidad usaban "husk" y "kernel". Me hizo sentir como un granjero. –

+0

Tengo métodos privados prefijados que intento llamar recursivamente con "Interno", por lo que puedo tener un método llamado Agregar() y luego un InnerAdd(). –

+0

@DaveZiegler 'InnerAdd' es un buen nombre. Yo lo uso también MS también tiene un método [InnerAdd] (http://msdn.microsoft.com/en-us/library/hh860431 (v = pandp.51) .aspx) (aunque no se trata de recursividad). – nawfal

Respuesta

7

Personalmente, probablemente lo llame CalculateSomethingRecursivelyImpl - Tiendo a usar Impl como un sufijo para "el método privado que realmente hace la mayor parte del trabajo del método que tiene el mismo nombre pero sin el sufijo". El hecho de que sea recursivo no me cambiaría eso, pero es solo una elección personal.

Para ser sincero, un método así presumiblemente sería siempre privado, por lo que no importa tanto como para los métodos públicos/protegidos. Solo elabora una convención con los otros miembros de tu equipo.

+0

'Impl' como en implementación? –

+0

@GeorgeDuckett: Sí, exactamente. –

2

Honestamente, yo diría que las mismas convenciones de nombres C# que se aplican para la función no recursiva también se aplican para la recursiva. Trate de nombrar algo descriptivo pero relativamente corto. Y si realmente no puedes pensar en algo diferente al no recursivo, entonces tendrás que experimentar con sufijos. Prefiero "Ayuda", aunque trato de evitar el uso de sufijos.

Cuestiones relacionadas