Esiste un termine specifico per un metodo accessor che restituisce un valore booleano?

5

Mi sembra di ricordare che esiste un termine specifico per un metodo accessor che restituisce un valore booleano ma mi sfugge. Ad esempio: metodi tipici come:

class Example {
    bool isDirty();
    bool hasChildren();
    bool isValid(SomeType obj);
};

Mi accontenterò anche di un termine come applicato a funzioni non membri.

    
posta David Wheaton 14.02.2012 - 14:30
fonte

3 risposte

11

Una funzione da qualche tipo T a Boolean viene in genere definita un predicato e se vuoi chiarire che si tratta di un metodo di un oggetto, vale a dire che prende l'implicito argomento this in aggiunta agli altri argomenti, quindi puoi chiamarlo metodo predicato . Se non accetta altri argomenti tranne l'argomento implicito this , puoi chiamarlo proprietà del predicato .

Vedi ad esempio Predicate<T> in .NET e ad es. javax.sql.rowset.Predicate o com.google.common.base.Predicate in Java.

    
risposta data 14.02.2012 - 16:11
fonte
1

Se il metodo restituisce semplicemente un attributo dell'oggetto, lo chiamerei accedente, poiché viene semplicemente utilizzato per accedere a una variabile membro privata dell'oggetto.

Se il metodo esegue una sorta di calcolo o contiene logica (oltre alla possibilità di registrazione o convalida), è semplicemente un metodo. Non è diverso da un metodo che esegue qualsiasi altra operazione che utilizza lo stato dell'oggetto e restituisce un valore che non è un booleano.

Se il metodo esegue alcune operazioni speciali, come il controllo di uguaglianza o validità, potrei fare riferimento a ciò che fa, ad esempio chiamandolo "metodo di validazione" o "metodo di uguaglianza". Quei nomi sono un po 'più brevi di "un metodo che controlla la validità dell'oggetto" o "un metodo che controlla l'uguaglianza di questo oggetto con un altro".

Tuttavia, non tutto ha un nome speciale. Chiamalo per quello che è.

    
risposta data 14.02.2012 - 16:12
fonte
0

Un interruttore (che è ambiguo), una bandiera, un bool, uno stato ... Nulla di ciò che riesco a pensare è specifico di un getter ...

Ambienti diversi hanno convenzioni diverse ...

Ruby: some_object.is_something?

ObjC: [someObject is Something]

Quindi suppongo che io sostenga la "dottrina" ...

    
risposta data 14.02.2012 - 15:45
fonte

Leggi altre domande sui tag