Dipende molto (sulla semantica di -
e di >
).
Innanzitutto, non hai menzionato il tipo di a
e di b
. Ma supponiamo per semplicità che abbiano entrambi lo stesso tipo integrale (ad esempio C int
o long
).
Quindi, a - b
potrebbe essere errato (si pensi a casi strani come overflow) o comportamento indefinito (si pensi all'aritmetica del puntatore, in alcuni casi la differenza di calcolo tra puntatori non collegati è UB). E in alcuni linguaggi di programmazione e con alcuni tipi, è possibile definire a-b
e confrontare con 0, ma a>b
potrebbe non essere. A volte in C ++ a-b
, a>b
, x>0
sarebbero tre diversi operatori definiti dall'utente di alcuni utenti specificati class
(immagina alcuni bignum library) con diversi comportamenti e prestazioni.
Anche a
e b
potrebbero avere alcuni tipi bizzarri (forse matrici ...) e confrontarli potrebbe avere senso quando il calcolo delle loro differenze è inaffidabile, o richiede tempo, ecc.
Leggi la regola as-if e le specifiche precise del tuo particolare linguaggio di programmazione (e la sua semantica ).
Infine, in molti casi a - b > 0
è più leggibile di a > b
(ad esempio quando a
e b
sono istanti temporali, la loro differenza è una durata). Quindi dipende davvero.
Sostituendo a-b>0
con a>b
(o viceversa, se utile) -per interi- è una micro-ottimizzazione che la maggior parte di ottimizzare i compilatori farebbe meglio di te. Quindi non preoccuparti!
Is it a good practice as a coding habit?
Non nel 2018 , a meno che non migliori la leggibilità. Devi prestare molta attenzione a per rendere il tuo codice leggibile .
BTW, IMHO 0
di solito non è un numero magico . È piuttosto speciale (in alcuni rari casi potrebbe essere un numero magico, ma scegliere 0 come magia è di cattivo gusto e incline agli errori ...).