2009-08-04 29 views
45

Necesito un buen nombre de variable para un valor booleano que devuelve falso cuando un objeto es el último en una lista.Convenciones de nomenclatura: ¿qué nombre nombrar una variable booleana?

El único nombre decente que se me ocurre es 'inFront', pero no creo que sea lo suficientemente descriptivo.

Otra opción sería 'isNotLast'. Sin embargo, esto no es una buena práctica (Código Completo, página 269, Usar nombres de variables booleanas positivas).

Soy consciente de que podría cambiar la definición de la variable. Tan verdadero se devuelve cuando un objeto es el último y llama a la variable 'isLast', sin embargo, haría esta tarea más fácil si tuviera la primera explicación.

+1

¿Qué hay de publicar algo del código? las variables necesitan un contexto – fabrizioM

+7

Si cambia el nombre, está tratando el síntoma. La causa de este problema es la lógica negativa. – starblue

+1

¿Qué tal tiene hasPredecessor/hasSuccessor para indicar si hay elementos que preceden/siguen al elemento actual? if (item.hasSuccessor) {blah blah blah} –

Respuesta

34
isBeforeTheLastItem 

isInFrontOfTheLastItem 

isTowardsTheFrontOfTheList 

Quizás demasiado prolijo pero pueden ayudarlo a aportar ideas.

+5

Creo que se vendió en 'isBeforeLast' ... duh –

+9

¿No se puede reemplazar 'isBeforeLast' con'! IsLast'? –

+27

Si puede haber elementos _después_ "Último", ¿por qué se llama "Último"? –

15

hasSiguiendoItems? o tieneSiguiendoXXXXs donde XXXX es lo que sea que el elemento en su lista es?

+3

Estaba pensando en esa línea. hasNext podría funcionar. –

11

Personalmente, más que nada, cambiaría la lógica, o miraría las reglas de negocio para ver si dictan cualquier posible denominación.

Dado que, la condición real que alterna el booleano es en realidad el acto de ser "último". Yo diría que cambiar la lógica y nombrarla como "IsLastItem" o similar sería un método más preferido.

+2

+1. Si mal no recuerdo, este es también el espíritu de esa sección en Code Complete. –

0

Llamaría a la variable beforeLast.

1

¿Qué tal:

hasSiblings 
or isFollowedBySiblings (or isFolloedByItems, or isFollowedByOtherItems etc.) 
or moreItems 

Aunque creo que a pesar de que no se debe hacer un hábito de frenado 'las reglas' a veces la mejor manera de lograr algo puede ser que haga una excepción de la regla (código directrices completas), y, en su caso, el nombre de la variable isNotLast

+0

Un hermano es algo que tiene un padre en común con otro hermano. No hay padres en una lista plana. –

+0

@John Topley: Sí, supongo que tienes razón, pero podrías argumentar que todos los elementos de la lista son hermanos y que su padre es la lista en sí. Supongo que los nombres siguientes pueden ser renombrados como isFollowedByItems o porOtherItems o porMoreItems o algo más. Todavía siento que isNotLast es el mejor nombre, a menos que pueda cambiar el significado de la bandera al revés y luego llamarlo: isLast (wow ... that was long :) –

2

Haskell utiliza init para referirse a todos excepto el último elemento de una lista (la inversa de tail, básicamente); ¿Funcionaría isInInit, o es demasiado opaco?

+3

Demasiado opaco. Cualquiera que no conozca a Haskell estaría confundido. –

+0

matlab y octava usan 'end' para designar el último elemento – wander95

3

isPenultimateOrPrior

isBeforeEnd

0

Dos Temas de reflexión

  1. Cuál es el alcance de la variable (en otras palabras: ¿Está hablando de una variable local o un campo) ? Una variable local tiene un alcance más estrecho en comparación con un campo. En particular, si la variable se usa dentro de un método relativamente corto, no me importaría demasiado su nombre. Cuando el alcance es grande, nombrar es más importante.

  2. Creo que hay un conflicto inherente en la forma de tratar esta variable. Por un lado, dices "falso cuando un objeto es el último de una lista", donde, por otro lado, también quieres llamarlo "en el frente". Un objeto que es (no) el último en la lista no me parece (no) inFront. Esto iría con lo último.

30

Mi voto sería para nombrarlo IsLast y cambiar la funcionalidad. Si eso no es realmente una opción, dejaría el nombre como IsNotLast.

Estoy de acuerdo con Code Complete (Usar nombres de variables booleanos positivos), también creo que las reglas están hechas para romperse. La clave es romperlos solo cuando tienes que hacerlo. En este caso, ninguno de los nombres alternativos es tan claro como el nombre que "rompe" la regla. Entonces este es uno de esos momentos en los que romper la regla puede estar bien.

1

Un nombre semántico simple sería last. Esto permitiría código de código siempre positiva como:

if (item.last) 
    ... 

do { 
    ... 
} until (item.last); 
-2

me gustaría ir con isUnlast.

¡Es breve, concisa, y describe la situación perfectamente!

+1

Ese es un nombre muy inusual y haría que la mayoría de las personas se detuvieran para pensar lo que significa. "Un" creo que a menudo puede interpretarse como opuesto, en lugar de solo una negación. Por lo tanto, podría significar "primero", en lugar de "no último".Además, está demasiado cerca de "desembalar", que es una palabra que significa algo completamente diferente. Entonces, por todos lados, una elección terrible, creo. – jbyrd

+0

Es un nombre divertido. – Watusimoto

+8

Mirando mi respuesta un año después, valió la pena la votación negativa. – Watusimoto

Cuestiones relacionadas