#java #packet
#java #пакет
Вопрос:
У меня есть класс игрового движка, общий для клиентской программы и серверной программы. У меня есть определенная функция updatePlayer (данные PlayerData), которая должна обновлять проигрыватель. (PlayerData — это, по сути, тип данных пакета.)
Для наилучших стандартов, куда должен идти класс PlayerData? Должен ли это быть собственный файл, в сетевом пакете или подкласс статического класса пакетов? Обычно я бы создал основное пространство имен (названное в честь моего проекта) на c или определил класс в своем классе networking, но вы не можете определить несколько классов в одном файле на java.
Как бы вы это сделали?
Комментарии:
1. Я обнаружил, что это интересное чтение на тему структуры пакета: javapractices.com/topic/TopicAction.do?Id=205
2. Интересно. В моем игровом движке есть пакет (без подпакетов), но в моем текущем проекте его нет. Может быть, мне стоит заняться организацией вещей…
3. В общем, рекомендуется избегать пакета по умолчанию (то есть вообще никакого пакета). Хорошая структура пакета окажет большую помощь в организации вашего кода. На один уровень выше этого важно хорошее разделение на подпроекты. Для материалов, которые совместно используются на стороне клиента и сервера, вам определенно понадобится отдельная библиотека (например, файл jar) с соответствующими классами. Наличие отдельных проектов, которые постепенно накладываются друг на друга, также способствует повторному использованию кода и упрощает сборку кода.
Ответ №1:
Для наилучших стандартов, куда должен идти класс PlayerData?
Он должен быть обязательно в своем собственном файле. Вложенные / внутренние классы, как правило, не нужны в Java.
Комментарии:
1. Ну, хорошо. Может быть, мне следует вместо этого использовать сериализацию? Я полагаю, это затруднило бы переключение между пакетами.
2. Сериализация? Какое это имеет отношение к тому, «куда должен идти класс PlayerData?»
3. Вместо класса PlayerData. Неважно. Я это понял. Спасибо!
4. «Сериализовать» объект — это преобразовать его в текстовую строку, подходящую для записи в файл на диске или передачи по линии связи, где его затем можно преобразовать обратно во внутреннее представление объекта. т. Е. Это инструмент, используемый при сохранении или транспортировке объектов. Это не имеет ничего общего с тем, как вы организуете свои классы.
Ответ №2:
Я не уверен, что вы подразумеваете под «пакетом» в этом контексте. Если мой ответ кажется неприменимым, пожалуйста, уточните.
Но в целом, в Java, если у вас есть несколько связанных классов, вы должны создать пакет и поместить связанные классы в этот пакет. «Пакет» в Java на самом деле просто подкаталог, который включает в себя все связанные.файлы java.
Не создавайте подкласс только для группировки вещей. Это не то, для чего они предназначены.
Если вы переходите с другого языка, может показаться, что создание отдельного файла для каждого класса может показаться сложной задачей. Конечно, это может означать, что вам нужно открыть десять файлов, чтобы увидеть все связанные вещи. Но, с другой стороны, это упрощает поиск нужного файла: просто найдите файл с этим именем. И поскольку имя файла и имя класса всегда должны быть одинаковыми, мы исключаем одно имя из списка вещей, которые мы должны понять. У меня были некоторые незначительные проблемы с VB, где имя файла и имя класса немного отличаются, и это заставило меня потратить несколько дополнительных минут, чтобы разобраться.