В свободное время я создаю игру для Android. Он использует библиотеку libgdx, так что довольно много работы для меня сделано.
Разрабатывая, я небрежно выбирал типы данных для некоторых процедур. Я использовал хеш-таблицу, потому что хотел что-то близкое к ассоциативному массиву. Человекочитаемые ключевые значения. В других местах для достижения подобных вещей я использую вектор. Я знаю, что в libgdx есть классы vector2 и vector3, но я никогда не использовал их.
Когда я сталкиваюсь со странными проблемами и ищу помощь в переполнении стека, я вижу, что многие люди просто перезаписывают вопросы, которые используют определенный тип данных, когда другой технически «правильный». Как и использование ArrayList, потому что он не требует определенных границ, а не переопределения int [] с новыми известными границами. Или даже что-то тривиальное, как это:
for(int i = 0; i < items.length; i ++)
{
// do something
}
Я знаю, что он оценивает item.length на каждой итерации. Тем не менее, я также знаю, что предметов никогда не будет больше, чем 15-20 предметов. Так стоит ли мне оценивать items.length на каждой итерации?
Я провел несколько тестов, чтобы увидеть, как приложение работает, используя метод, который я только что описал, по сравнению с правильным, следуя руководству и используя точные типы данных, предложенные сообществом. Результаты: то же самое. Средний 45 кадров в секунду. Я открыл каждое приложение на телефоне и вкладке галактики. Нет разницы.
Поэтому я думаю, что мой вопрос к вам заключается в следующем: есть ли порог, когда уже не имеет значения быть правильным? Можно ли говорить: «Пока работа выполнена, мне все равно?»