Довольно интересный пост, но заметил неточность с тестами.
MonoBehaviour должен быть несколько другого вида, чтобы избежать несколько аллокаций Vector3:
void Update()
{
var position = transform.localPosition; // тут новый
transform.localPosition = new Vector3(position.x, position.y, position.z + 1); // тут новый
}
Думаю каждый фрейм 200к объектов создавать выходит тяжеловато.
Мне нравится ваш подход.
Ничто не мешает, к примеру, биндить физику Unity3d на модель, апдейтить модель, биндить модель к физике Unity3d — я почти так и делал, вполне удобно и на FPS влияние минимальное.
Но моя модель про анимации ничего не знала, не придумал как подружить их грамотно. Как у SpaceLab с этим дела обстоят? Есть ли необходимость в физике и анимациях на уровне проекта с игровой логикой?
У слова есть правильный перевод. Тут дело как раз в том, как это УЖЕ переведено и используется.
В качестве опровержения можно вспомнить слова:
аккумулятор — accumulator
иллюзия — illusion
дискуссия — discussion
процесс — process
класс — class
Разве кто-то сменил технологию? Транслятор сменили и всё. Как писали на php, так и пишут.
Да и Windows множество участков кода имеет на c# — нет проблем в таком подходе.
Аналогии странные. Как трансляция языка связана с уровнем языка — не понимаю. Еще и на оскорбления переходить «не понимаю, как здравомыслящий человек...» — потому не удивлен вашему рейтингу.
Есть C# to Native от unity3d — теперь язык плохой? Есть даже JS to Native. Есть множество JVM для Java, в том числе и AoT под Android. Так чего удивляться существованию Php to Navite?
Вот есть UI поток, а есть другие Background потоки. И вы такой, на зная сложность вставки в хэштаблицу, решили добавить 1 запись туда. А она взяла и пересоздалась и начала пересчитывать хэши для корзин, так как места не хватало уже и UI подвис.
Или привыкли вы за O(1) забирать из ArrayList в UI, а сейчас решили из середины LinkedList достать и снова UI подвис.
Или удалить из середины ArrayList запись, или, что еще хуже, прямо в UI перебрать все элементы в нем и удалить по фильтру что-то.
Продолжать примеры?
Хорошего разработчика от посредственного эти вещи и отличают — он знает, что использовать и как это использовать.
Я в синтаксисе php не силен и мои рассуждения строятся на том, что я реализую некий интерфейс, чего со статик методами не сделать. Какая будет реализация — уже абстракция.
Т.е. я могу прокинуть любую фабрику для инстанциирования объекта.
Возвращается объект типа String — каким он будет, определяет фабрика.
Если на выходе будет не String, а Product, как в примерах из википедии — суть не изменится, это фабрика.
И это очень плохо, так как базовый класс знает, как будут создаваться наследники. И что еще хуже, он будет знать, куда этот объект будет сохраняться или откуда будут браться данные. Например, есть у вас статичный метод, принимающий код ошибки, а возвращающий строку с её описанием для UI. И лезет он за этими данными в BD/Network/XML/Etc. — вот тут жесткая связь данных и их способа хранения, никогда так не делайте :)
Наверное для вас будет новостью, но фейсбук и вконтакте написаны на PHP.
Мыслите стереотипно. Я провел множество собеседований по Java, почти все люди с высшим образованием в сфере it. Но и имея 5-летний опыт работы люди могли не знать, как работает Хэш Таблица, не знать, что такое шаблон Адаптер и т.д.
Вы избирательно читаете комментарии. Уже обсудили, что %s работает только при наличии 1 параметра. При наличии 2 и более — обязательно нумеровать их. Стиль и код выглядит целостнее, когда всё одинаково. Про plurals тоже обсудили уже, они могут навредить при работе с локализациями, при этом только на старых версиях андроида вроде как. Да и MessageFormat более гибок, чем телеграм и пользуется.
Почему не стоит его использовать при аргументации? Если проект имеет многомиллионную аудиторию и что-то не использует — стоит задуматься «почему?». Я исследовал их исходники, код не идеален с точки зрения читабельности, но фрагменты не используются в угоду скорости и плавности анимаций, коих с фрагментами объективно не добиться. Класс BaseFragment есть, просто он не extends Fragment.
Странно, что автор не участвует в дискуссии, мне его статься витися интересной.
К сожалению, дело давнее, потому и личных пруфов по Plurals не предоставлю, но это не предположение точно. Помню лишь, что проблемы были именно с локализацией. Гугл нашел как минимум одну проблему с ними, когда quantity равна нулю ССЫЛКА.
У нас на проектах используется MessageFormat.
В десятках своих проектов? В десятках опенсорсных? В десятках фрилансовых на сапорте?
Не пытаюсь что-то доказать, но я встречал лишь несколько реально крупных проектов, написанных не мной. Примером может послужить Telegram. По ссылке вот тут xml для русской локализации — ССЫЛКА и там нету Plurals и %s. Наверное о чем-то это говорит у проекта с многомилионной аудиторией. Или вы думаете, что они просто не умеют?
По поводу ссылок на свои же ресурсы — это же даже не рекомендация, я написал что можно так делать. Как плюс — можно добиться существенной экономии на переводе.
По // тоже самое, так можно, но я же не настаиваю :)
MonoBehaviour должен быть несколько другого вида, чтобы избежать несколько аллокаций Vector3:
Думаю каждый фрейм 200к объектов создавать выходит тяжеловато.
Вот более справедливый код:
Ничто не мешает, к примеру, биндить физику Unity3d на модель, апдейтить модель, биндить модель к физике Unity3d — я почти так и делал, вполне удобно и на FPS влияние минимальное.
Но моя модель про анимации ничего не знала, не придумал как подружить их грамотно. Как у SpaceLab с этим дела обстоят? Есть ли необходимость в физике и анимациях на уровне проекта с игровой логикой?
В качестве опровержения можно вспомнить слова:
аккумулятор — accumulator
иллюзия — illusion
дискуссия — discussion
процесс — process
класс — class
и так далее и тому подобное.
Да и Windows множество участков кода имеет на c# — нет проблем в таком подходе.
Есть C# to Native от unity3d — теперь язык плохой? Есть даже JS to Native. Есть множество JVM для Java, в том числе и AoT под Android. Так чего удивляться существованию Php to Navite?
Или привыкли вы за O(1) забирать из ArrayList в UI, а сейчас решили из середины LinkedList достать и снова UI подвис.
Или удалить из середины ArrayList запись, или, что еще хуже, прямо в UI перебрать все элементы в нем и удалить по фильтру что-то.
Продолжать примеры?
Хорошего разработчика от посредственного эти вещи и отличают — он знает, что использовать и как это использовать.
Т.е. я могу прокинуть любую фабрику для инстанциирования объекта.
Возвращается объект типа String — каким он будет, определяет фабрика.
Если на выходе будет не String, а Product, как в примерах из википедии — суть не изменится, это фабрика.
Мыслите стереотипно. Я провел множество собеседований по Java, почти все люди с высшим образованием в сфере it. Но и имея 5-летний опыт работы люди могли не знать, как работает Хэш Таблица, не знать, что такое шаблон Адаптер и т.д.
MessageFormat
более гибок, чем телеграм и пользуется.Почему не стоит его использовать при аргументации? Если проект имеет многомиллионную аудиторию и что-то не использует — стоит задуматься «почему?». Я исследовал их исходники, код не идеален с точки зрения читабельности, но фрагменты не используются в угоду скорости и плавности анимаций, коих с фрагментами объективно не добиться. Класс
BaseFragment
есть, просто он неextends Fragment
.Странно, что автор не участвует в дискуссии, мне его статься витися интересной.
Вот комментарий по проблемам с Plurals от vikarti, помимо моей ссылки на SO — #comment
У нас на проектах используется
MessageFormat
.При наличии 2 и более будет выдана ошибка:
Наверное потому мы везде использовали %1$, даже при наличии лишь 1 параметра — выглядит целостнее.
Не пытаюсь что-то доказать, но я встречал лишь несколько реально крупных проектов, написанных не мной. Примером может послужить Telegram. По ссылке вот тут xml для русской локализации — ССЫЛКА и там нету Plurals и %s. Наверное о чем-то это говорит у проекта с многомилионной аудиторией. Или вы думаете, что они просто не умеют?
По поводу ссылок на свои же ресурсы — это же даже не рекомендация, я написал что можно так делать. Как плюс — можно добиться существенной экономии на переводе.
По // тоже самое, так можно, но я же не настаиваю :)