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.