When most of the code in a "for" loop uses an offset to the loop index, rather than the loop index itself, then maybe the for loop should be adjusted to loop over the range of values that the code needs, rather than computing some other value at each point of usage.
Example:
Starting here:
For i = 1 to max array[i-1] = otherarray[i-1] + factor * (i-1) ' other stuff using "i-1" a lot... Next iExtractLocalVariable? Refactoring:
For i = 1 to max j = i - 1 array[j] = otherarray[j] + factor * (j) ' other stuff using "j" a lot... Next iThen ajust the loop range to eliminate the computation:
For j = 0 to max-1 array[j] = otherarray[j] + factor * (j) ' other stuff using "j" a lot... Next j
Related discussion: InternalLoopExitsAreOk (or NOT ;-)
See also: RenumberIndexVariable
CategoryRefactoring/RefactoringLanguage UseEnumerationsInsteadOfForLoops