Quali sono le abbreviazioni più idiomatiche per gli operatori di confronto [chiuso]

1

Mi chiedo quali siano le abbreviazioni di testo più idiomatiche per gli operatori di confronto. Ho bisogno di costruire un enum personalizzato con loro, quindi non posso usare i loro simboli. Per me personalmente, questi sembrano idiomatici:

==  EQ
!=  NEQ
<   LT
<=  LTE
>   GT
>=  GTE

Tuttavia, alcune altre lingue sembrano utilizzare parole di 2 lettere: EQ, NE, GT, GE, LT, LE .
Ma ho anche visto questi sono stati utilizzati (ad esempio in querydsl ): EQ, NE, GT, GOE, LT, LOE .
E C # sembra evitare il problema semplicemente scrivendo : Equal, NotEqual, LessThan, LessThanOrEqual, GreaterThan, GreaterThanOrEqual .

Sembra insignificante, ma ho bisogno di decidere per una variante, tuttavia. E potrei anche provare a scegliere il "giusto".

(Mi dispiace anche se l'ingegneria del software non è la comunità giusta per questo, ma non ho trovato un posto migliore per discutere le convenzioni di denominazione)

    
posta Felk 28.06.2017 - 14:02
fonte

2 risposte

8

Come regola generale, meno uno sviluppatore deve indovinare per capire qualcosa, meglio è.

Uno dei motivi principali per cui gli Enumeratori hanno creato è quello di evitare quei fastidiosi numeri magici e stringhe magiche che nessuno potrebbe davvero ricordare quello che hanno fatto due settimane dopo. Possono anche porre un vincolo su quali valori è possibile passare a una determinata funzione o metodo se la lingua supporta una digitazione strong, il che aiuta anche a evitare errori di programmazione.

Con questo in mente, più esplicativi sono gli Enumeratori, meglio è. Basta controllare questo esempio:

switch(Comparer)
{
    case Operator.Equals:
        DoSomething();
        break;
    case Operator.GreaterThan:
        DoSomethingElse();
        break;
}

Confronta questo con le abbreviazioni alternative, più compatte:

switch(Comparer)
{
    case Operator.EQ:
        DoSomething();
        break;
    case Operator.GT:
        DoSomethingElse();
        break;
}

La differenza è sottile, ma il primo esempio è molto più leggibile. Quando hai un IDE decente con un buon completamento automatico al tuo fianco, finisci per non notare nemmeno i caratteri in più durante lo sviluppo, ma ti noterai quando effettuerai il debug e sarai contento di essere lì.

Quindi, a meno che tu non abbia dei buoni motivi per giocare a golf il tuo codice, rendi i tuoi enumeratori chiari e facili da capire. Il tuo futuro ti ringrazierà più tardi.

    
risposta data 28.06.2017 - 14:39
fonte
3

Sembra che tu stia combinando i token in un grammer e identificatori in un programma.

Poiché il tuo utilizzo è identificativo in un programma, andrei con qualsiasi cosa la tua guida di stile suggerisca per nominare le cose (o LessThan se non hai una guida di stile), ad es.

Expression<Boolean> LessThan(Expression<T> lhs, Expression<T> rhs)
{
    return new ComparisonExpression(Comparisons.LessThan, lhs, rhs);
}
    
risposta data 28.06.2017 - 14:31
fonte

Leggi altre domande sui tag