Se sei un principiante con una lingua, dovresti imparare gli idiomi di quella lingua, non inventarne di tuoi.
Come sottolineato da @jozefg , le funzioni Java static final
non equivalgono a #define
macro in C / C ++. Funzionano in modi diversi e servono a scopi completamente diversi.
L'introduzione di una nuova sintassi arbitraria è garantita per far scappare qualsiasi sviluppatore che non abbia familiarità con il tuo codebase. Se vedo qualcosa di simile
for(int i = 0; i < 10; i++) {
doSomethingNthTime(i);
}
allora so esattamente cosa significa. Se vedo:
REP(i, 10) { doSomethingNthTime(i); }
non è da nessuna parte ovvio. Di chi è questo rappresentante di cui stai parlando? E anche se so che per REP
intendi "ripeti", quale intervallo esatto coprirà i
? Dovrò esaminare la dichiarazione macro per sapere, mentre con il semplice ciclo for
la risposta è in bella vista.
Inoltre, for
semplice consente cose che la tua macro REP
non ha modo di esprimere. Che ne dici di quanto segue?
short i;
long j, k = 0;
for(i = 0, j = 16; i < 10; i++, j <<= 2) {
doSomethingNthTime(i, j, &k);
}
o
int i;
for(i = 0; i < 16; i++) { ... }
i += values[z];
for(; i < 1024; i++) { ... }
Tali complesse espressioni di for
(sebbene ovviamente con un corpo di loop più carnoso) non sono del tutto insolite nel codice di produzione e possono essere estremamente utili in alcune situazioni.