На данный момент скорость не важна (вставьте комментарий преждевременной оптимизации;). Важно то, как быстро вы можете понять, что делает код , то есть вызывать метод dicePool
раза.
Первый метод выделяет массив размером dicePool
и перебирает его значения, что приводит к выполнению тела цикла dicePool
раз (я буду делать вид, что вы имели в виду int
вместо Integer
, чтобы избежать несвязанных вопрос автобокса). Это потенциально неэффективно для компьютера , выполняющего код, но, что более важно, это неэффективно для человека , читающего код, поскольку он концептуально далек от того, чего вы хотели достичь. В частности, вы заставляете читателя задуматься о новом массиве, который вы только что создали, И о значении переменной a
, которая будет равна 0 для каждой итерации цикла, даже если ни один из них не связан с вашей конечной целью .
Любой Java-программист, рассматривающий второй метод, поймет, что вы выполняете тело цикла dicePool
раз с i
«подсчетом» до dicePool
. Хотя последняя часть не особенно важна, начало именно то, что вы хотели сделать. Использование этой распространенной Java-идиомы сводит к минимуму несвязанные вещи, о которых нужно подумать читателю, поэтому это лучший выбор.
Если сомневаешься, иди с простотой. : D