2009-08-04 12 views
45

Ho bisogno di un nome di variabile valido per un valore booleano che restituisce false quando un oggetto è l'ultimo in un elenco.Convenzioni di denominazione: come denominare una variabile booleana?

L'unico nome decente che riesco a trovare è 'inFront', ma non credo che sia abbastanza descrittivo.

Un'altra scelta sarebbe "isNotLast". Questa non è comunque una buona pratica (Codice Completo, pagina 269, Usa nomi di variabili booleane positive).

Sono consapevole che potrei cambiare la definizione della variabile. Quindi true viene restituito quando un oggetto è l'ultimo e chiama la variabile 'isLast', tuttavia, renderebbe questa attività più semplice se avessi la prima spiegazione.

+1

Che dire postare parte del codice? le variabili richiedono un contesto – fabrizioM

+7

Se si modifica il nome in cui si sta trattando il sintomo. La causa principale di questo problema è la logica negativa. – starblue

+1

Che ne dici di hasPredecessor/hasSuccessor per indicare se ci sono elementi che precedono o seguono l'elemento corrente? if (item.hasSuccessor) {blah blah blah} –

risposta

34
isBeforeTheLastItem 

isInFrontOfTheLastItem 

isTowardsTheFrontOfTheList 

Forse troppo prolisso ma possono aiutarti a darti idee.

+5

penso di essere venduto su 'isBeforeLast' ... duh –

+9

Can not 'isBeforeLast' essere sostituito con'! IsLast'? –

+27

Se ci possono essere elementi _after_ "Ultimo", allora perché si chiama "Ultimo"? –

15

hasFollowingItems? o hasFollowingXXXXs dove XXXX è qualunque sia l'elemento nella tua lista?

+3

Stavo pensando in questo senso. hasNext potrebbe funzionare. –

11

Personalmente più di ogni altra cosa cambierei la logica, o guardo le regole di business per vedere se dettano qualsiasi potenziale denominazione.

Poiché, la condizione effettiva che attiva il booleano è in realtà l'atto di essere "ultimo". Direi che cambiare la logica e nominarla "IsLastItem" o simile sarebbe un metodo più preferito.

+2

+1. Se ricordo bene, questo è anche lo spirito di quella sezione in Code Complete. –

0

Chiamerei la variabile beforeLast.

1

ne dite:

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

Anche se penso che anche se non si dovrebbe prendere l'abitudine di frenata 'regole' a volte il modo migliore per realizzare qualcosa può essere quella di fare un'eccezione alla regola (Codice linee guida complete), e nel tuo caso, il nome della variabile isNotLast

+0

Un fratello è qualcosa che ha un genitore in comune con un altro fratello. Non ci sono genitori in una lista piatta. –

+0

@John Topley: Sì, suppongo che tu abbia ragione, ma potresti obiettare che tutti gli elementi della lista sono fratelli e che il loro genitore è la lista stessa .. Immagino che isFollowedBySiblings possa essere rinominato in qualcosa come isFollowedByItems, o daOtherItems o byMoreItems o qualcos'altro. Sento ancora che isNotLast è il nome migliore, a meno che non possa cambiare il significato della bandiera al contrario e quindi chiamarlo: isLast (wow .. che è stato lungo :) –

2

Haskell utilizza init per riferirsi a tutti, ma l'ultimo elemento di una lista (l'inverso di tail, in fondo); isInInit funziona, o è troppo opaco?

+3

Troppo opaco. Chiunque non conosca Haskell sarebbe semplicemente confuso. –

+0

matlab e ottava usano 'end' per designare l'ultimo elemento – wander95

3

isPenultimateOrPrior

isBeforeEnd

0

Due problemi a cui pensare

  1. Qual è la portata della variabile (in altre parole: stai parlando di un variabile locale o in un campo) ? Una variabile locale ha un ambito più ristretto rispetto a un campo. In particolare, se la variabile viene utilizzata all'interno di un metodo relativamente breve, non mi interesserebbe molto il suo nome. Quando l'ambito è grande, la denominazione è più importante.

  2. Penso che ci sia un conflitto intrinseco nel modo in cui trattate questa variabile. Da un lato si dice "falso quando un oggetto è l'ultimo di un elenco", dove d'altro canto si vuole anche chiamarlo "infronte". Un oggetto che è (non) ultimo nella lista non mi colpisce come (non) infronte. Questo andrei con isLast.

30

Il mio voto sarebbe di nominarlo ÈLAST e modificare la funzionalità. Se questa non è davvero un'opzione, lascerei il nome come IsNotLast.

Sono d'accordo con Codice completo (Usa nomi di variabili booleane positive), credo anche che le regole siano fatte per essere infrante. La chiave è di romperli solo quando è assolutamente necessario. In questo caso, nessuno dei nomi alternativi è chiaro come il nome che "infrange" la regola. Quindi questa è una di quelle volte in cui infrangere la regola può andare bene.

1

Un nome semantico semplice sarebbe last. Ciò consentirebbe codice sempre positivo come:

if (item.last) 
    ... 

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

Vorrei andare con isUnlast.

È breve, conciso e descrive perfettamente la situazione!

+1

Questo è un nome molto insolito e farebbe in modo che la maggior parte delle persone si fermi a riflettere sul significato. "Un" Penso che possa spesso interpretare l'opposto, piuttosto che solo una negazione. Quindi potrebbe significare "prima", piuttosto che "non ultimo".Inoltre, è troppo vicino a "unlasting", che è una parola che significa qualcosa di completamente diverso. Quindi, tutto intorno, una scelta terribile, penso. – jbyrd

+0

È un nome divertente. – Watusimoto

+8

Guardando la mia risposta un anno dopo, valeva il downvote. – Watusimoto

Problemi correlati