Помогите Статические методы при написании плагина

ReloGGrc

Активный участник
Пользователь
Баллы
46
Имя в Minecraft
ALis
Всех приветствую, где-то слышал, что static методы, это не хорошо, и вот решил у знающих людей уточнить почему же? Просто у меня несколько плагинов скажем так, живут на статистических методах. Срочно ли от них избавляться?
 
Зависит от ситуации. В общем случае - нет, статика это нормально. Другое дело, когда все превращается в static abuse. Например, хранить какую-нибудь Map и редактировать её через статику - скорей плохое использование. А вот какие-нибудь утилитарные методы, статичные фабрики - самое оно.
 
Последнее редактирование:
Зависит от ситуации. В общем случае - нет, статика это нормально. Другое дело, когда все превращается в static abuse. Например, хранить какую-нибудь Map и обращаться к ней/редактировать её через статику - скорей плохое использование. А вот какие-нибудь утилитарные методы, статичные фабрики - самое оно.
upload_2022-11-18_12-51-12.png

ладно

(p.s это единственная статическая переменная в моем большом плагине)
 
Посмотреть вложение 63807

ладно

(p.s это единственная статическая переменная в моем большом плагине)
Поправил немного формулировку - обращение то, в целом, дело более чем нормальное действие, а вот редактирование уже не очень здраво.
К слову, в ТАКОМ_ФОРМАТЕ принято писать лишь константы, а не всё, что public static final. Если ты постоянно редактируешь эту мапу, лучше caseList (или cases/caseMap, ибо это явно не лист)
PHP:
public static final Map<Material, String> CUSTOM_TYPE_NAMES = Map.of(Material.OBSIDIAN, "Камень преткновения"); // Валидно - нельзя изменить, но можно свободно получать информацию
public static final Map<UUID, Integer> playerData = new HashMap<>(); // Не очень - по сути глобальная переменная
 
Поправил немного формулировку - обращение то, в целом, дело более чем нормальное действие, а вот редактирование уже не очень здраво.
К слову, в ТАКОМ_ФОРМАТЕ принято писать лишь константы, а не всё, что public static final. Если ты постоянно редактируешь эту мапу, лучше caseList (или cases/caseMap, ибо это явно не лист)
PHP:
public static final Map<Material, String> CUSTOM_TYPE_NAMES = Map.of(Material.OBSIDIAN, "Камень преткновения"); // Валидно - нельзя изменить, но можно свободно получать информацию
public static final Map<UUID, Integer> playerData = new HashMap<>(); // Не очень - по сути глобальная переменная
так прикол в том, что мне надо ее изменить.

Допустим у меня из конфига в эту мапу загружаются кейсы. В игре игрок может создать новый кейс и он сразу добавится в мапу без перезагрузки конфига или же удалить кейс и он удалится.
 
так прикол в том, что мне надо ее изменить.

Допустим у меня из конфига в эту мапу загружаются кейсы. В игре игрок может создать новый кейс и он сразу добавится в мапу без перезагрузки конфига или же удалить кейс и он удалится.
Ну так тебе об этом и сказали - не нужно использовать такие названия, если это не константа. В твоем случае было бы грамотней назвать просто caseList.
Но лично я бы предложил вообще отказаться от статики: сделать CasesManager и сложить туда это поле, убрав статичность. А менеджер можно получать из инстанса плагина
 
Назад
Верх