В приведенном вами примере я бы сказал, что наличие именованных значений не лучше, чем просто использование int напрямую. Параметр является счетчиком, поэтому представление параметра в формате int так же наглядно, как и названная версия.
Это похоже на случай, когда я иногда сталкиваюсь с кодом C, который имеет такие вещи, как
#define ZERO 0
#define ONE 1
Там на самом деле не так много смысла. На самом деле, когда я вижу, что эти имена используются (а не когда я смотрю на определения), я испытываю желание перейти к определениям, чтобы убедиться, что имена не лгут (это было долгое, долгое время, но, Я на самом деле сталкивался с кодом, в котором, например, FALSE определен как 1, -1 или что-то отличное от нуля, что действительно очень плохо).
Редактировать: при втором взгляде кажется, что имена могут указывать, какое поле в первом параметре представляет интерес, и в этом случае имена могут иметь больший смысл - если имена имеют некоторую значимую связь с полем, чем просто числовое смещение. Трудно сказать, так ли это, потому что вы можете перефразировать код, с которым вы действительно работаете.