I fatti:
-
i ++ e ++ i sono ugualmente facili da leggere. Non ti piace perché non ci sei abituato, ma sostanzialmente non c'è niente che tu possa interpretare male come, quindi non c'è più lavoro da leggere o scrivere.
-
In almeno alcuni casi, l'operatore postfisso sarà meno efficiente.
-
Tuttavia, nel 99,99% dei casi, non avrà importanza perché (a) agirà comunque su un tipo semplice o primitivo ed è solo un problema se sta copiando un oggetto grande (b) ha vinto essere in una parte critica dal punto di vista delle prestazioni (c) non sai se il compilatore lo ottimizzerà o meno, potrebbe farlo.
-
Quindi, suggerisco di usare il prefisso a meno che non sia specificamente necessario che postfix sia una buona abitudine, solo perché (a) è buona abitudine essere precisi con altre cose e (b) una volta in una luna blu tu Intenderò usare postfix e fare il giro sbagliato: se scrivi sempre ciò che intendi, è meno probabile. C'è sempre un compromesso tra prestazioni e ottimizzazione.
Dovresti usare il buon senso e non la micro-ottimizzazione fino a quando non ne hai bisogno, ma non essere in flagrante inefficiente per il gusto di farlo. In genere ciò significa: innanzitutto, escludere qualsiasi costruzione di codice che sia inaccettabilmente inefficiente anche in un codice non critico nel tempo (normalmente qualcosa che rappresenta un errore concettuale fondamentale, come il passaggio di oggetti da 500 MB per valore senza motivo); e in secondo luogo, di ogni altro modo di scrivere il codice, scegliere il più chiaro.
Tuttavia, qui, credo che la risposta sia semplice: credo che scrivere un prefisso a meno che non si abbia specificamente bisogno di postfix sia (a) molto marginalmente più chiaro e (b) molto marginalmente più probabile sia più efficiente, quindi dovresti sempre scriverlo predefinito, ma non preoccuparti se lo dimentichi.
Sei mesi fa, ho pensato lo stesso di te, che i ++ era più naturale, ma è puramente quello a cui sei abituato.
EDIT 1: Scott Meyers, in "Più efficace C ++" di cui generalmente mi fido di questa cosa, dice che in generale si dovrebbe evitare di usare l'operatore postfisso su tipi definiti dall'utente (perché l'unica sana implementazione della funzione di incremento postfisso è per creare una copia dell'oggetto, chiamare la funzione di incremento del prefisso per eseguire l'incremento e restituire la copia, ma le operazioni di copia possono essere costose).
Quindi, non sappiamo se ci sono delle regole generali su (a) se ciò sia vero oggi, (b) se si applica anche (meno così) ai tipi intrinseci (c) se dovresti usare "+ + "su qualcosa di più di una lezione di iteratori leggera di sempre. Ma per tutte le ragioni che ho descritto sopra, non importa, fai quello che ho detto prima.
EDIT 2: si riferisce alla pratica generale. Se pensi che sia importante in qualche caso specifico, allora dovresti profilarlo e vedere. La creazione di profili è facile ed economica e funziona. Deducendo dai primi principi ciò che deve essere ottimizzato è difficile e costoso e non funziona.