Przeglądając zasoby serwisu Roflcopter znalazłem fragment kodu, który mnie… urzekł. Pomijam już roztrząsanie kwestii, czy ma sens rozwijanie pętli w Javie. Chodzi o to, że autor poniższego kawałka kodu, zabił mnie wygenerowanym przez siebie, jednym z trudniejszych do wykrycia przez tą samą osobę, błędów programisty. Zresztą, spójrzcie sami:

1
2
3
4
5
6
7
8
9
10
for ( j=0; j<array_len; j+=8 ) {
    total += array[j+0];
    total += array[j+1];
    total += array[j+2]; /* Main body of
    total += array[j+3];  * loop is unrolled
    total += array[j+4];  * for greater speed.
    total += array[j+5];  */
    total += array[j+6];
    total += array[j+7];
}

Niby wszystko w porządku, ale jak to mawiają “Diabeł tkwi w szczegółach” 🙂