Мне, оказывается, нравится TorqueScript - он служил мне хорошо за эти годы - и мне нравится Игровой Разработчик Крутящего момента. Для 3D у них Есть Игровой Игровой Усовершенствованный Механизм Механизма и Крутящего момента Крутящего момента. GarageGames является довольно хорошим материалом. Мало кривой обучения впереди, но после этого Вы будете приплывать'
Безопасность потоков не является проблемой, потому что это происходит на этапе построения, и два потока не могут создавать один и тот же объект. Что ж, если вы позволите this
ускользнуть из конструктора, то другой поток может получить доступ к объекту во время построения, но вам действительно не следует этого делать. С точки зрения функциональности, эти два параметра одинаковы, поэтому даже если бы были проблемы с безопасностью потоков, они повлияли бы на оба одинаково.
Первый вариант, инициализации полей при их объявлении не всегда возможно, если вам нужно выполнить некоторые вычисления, которые не могут быть выполнены в инициализаторе (даже в этом случае вы можете сохранить инициализацию вне конструктора, если вы делаете это в блоке инициализатора) . Но если возможен любой способ, то это чисто проблема стиля, и я не думаю, что среди Java-программистов есть явные предпочтения, поэтому выбирайте тот, который вам кажется лучше.
поскольку ваши переменные являются переменными экземпляра, а не переменными класса, у вас не возникает проблем с безопасностью потоков во время инициализации с использованием любого метода. Я уверен, что другие поддержат, если есть рекомендации, рекомендованные стандартом Java.
Я думаю, что это вопрос личных предпочтений и стандартов кодирования вашего проекта.
Просто убедитесь, что вы инициализируете переменные только в одном месте (конструктор или встроенный).
Выполнение инициализации done в конструкторе дает вам лучшее место для обработки исключений.
С точки зрения безопасности потоков они эквивалентны. Оба должны будут выполнять одни и те же инструкции, и если вы предпочитаете второй (с чем я согласен с вами в ваших предпочтениях), я бы использовал его. Если вы хотите обеспечить безопасность потоков для конструктора, вам потребуется синхронизированный вызов для вызова конструктора.