В последнее время я все чаще сталкиваюсь с этим типом кода:
List<Something> list = new LinkedList<Something>();
// add a bunch of constants to the list
// keep in mind that the number of items added is known on list creation
return list.toArray(new Something[list.size()]);
Теперь, по моему честному мнению, это неправильное использование API коллекций, и, хотя я не стал бы из этого выходить, если я увижу его один или два раза, я теперь сталкиваюсь с этим повсюду.
Я попытался поговорить с автором, используя что-то вроде: "Эй, почему бы вам не использовать ArrayList вместо этого, так как это именно то, что вам нужно, потому что его операция toArray - постоянная скорость". Однако, по мнению авторов, это преждевременная оптимизация, и я не должен заботиться об этом.
Я полностью согласен с тем, что оптимизация должна выполняться только при необходимости (и даже редко):), но, на мой взгляд, выбор правильной коллекции для использования не является преждевременной оптимизацией (и это не требует много времени или трудно... используя LinkedList
везде просто "плохой код" ИМХО).
Итак, мой вопрос. На ваш взгляд, я беспокоюсь об этих блоках кода преждевременной оптимизации? И если бы вы не приблизились к ситуации, вы бы снова поговорили с автором и какие аргументы вы бы использовали?