Помогите Java, как лучше

baksovic111

Активный участник
Пользователь
Баллы
88
Имя в Minecraft
Baksovic
Ребята, без лишних шуток пожалуйста!
Подскажите как лучше.
Можете пояснить в кратце.

upload_2018-1-29_14-46-36.png upload_2018-1-29_14-47-2.png


Второй вариант

upload_2018-1-29_14-47-27.png upload_2018-1-29_14-47-48.png
 
В плане удобства. мне удобнее создавать новый экземпляр класса.
 
nah, делай static переменную и сразу доставай её.
На меня как-то один кодер ругался типо нахера я везде статичные методы делаю
А если посмотреть начало моего программирования, так это ****ец 😁
Почти все переменные в классах public static
 
То-есть лучше использовать первый вариант который я показал?
 
Я наполовину @AtomicInteger , поэтому скажу вам, что первый вариант будет... поэлегантней, чтоли.
Но можно и статическую переменную обьявить, тоже неплохой вариант
 
Если же кодить таким образом.
На сколько это убого или нормаль-же?

upload_2018-1-29_16-25-23.png
upload_2018-1-29_16-25-48.png
 
Если же кодить таким образом.
На сколько это убого или нормаль-же?

Посмотреть вложение 49743
Посмотреть вложение 49744
Код:
public class Main extends JavaPlugin {

    @Override
    public void onEnable() {
        Config config = new Config();
        saveDefaultConfig(); 
        getServer().getPluginManager().registerEvents(new Events(config), this);
    }
}

public class Events implements Listener {

    private final Config config;

    public Events(Config config) {
        this.config = config
    }

    @EventHandler
    public void onPlayerDeath(PlayerDeathEvent event) {
        Player player = event.getEntity();
        if (ScrollUtils.checkScroll(player) {
            event.setKeepInventory(true);
            event.setKeepLevel(true);
            if (!config.scrollUsed.equalsIgnoreCase("none") {
                player.sendMessage(config.scrollUsed);
            }
        } else {
            if (!config.scrollNotUsed.equalsIgnoreCase("none") {
                player.sendMessage(config.scrollNotUsed);
            }
        }
    }
}
 
Оба варианта на свалку, достаем Dependency injection

Да че ты такой, он же разрабатывает не прошивку для контроллера температуры обшивки термоэлетрического генератора какого-нибудь, а пишет плагин для кубиков, пусть делает как удобно
 
Последнее редактирование:
Да че ты такой, он же разрабатывает не прошивку для контроллера температуры обшивки термоэлетрического генератора какого-нибудь, а пишет плагин для кубиков, пусть делает как удобно
Ну он если бы делал первое то как раз таки так и делал бы, тк как процедурки. А тут над юзать DI
 
Ну он если бы делал первое то как раз таки так и делал бы, тк как процедурки. А тут над юзать DI

Вот я сурцы плагинов глядел и везде, ВЕЗДЕ статическая переменная в главном классе либо конструктор с обьектом JavaPlugin. И ниче, не развалились без твоих инъекций
 
Да че ты такой, он же разрабатывает не прошивку для контроллера температуры обшивки термоэлетрического генератора какого-нибудь, а пишет плагин для кубиков, пусть делает как удобно
Как разработчик под железо могу сказать, что в этой сфере люди думают именно так. "Я же разработал железку, что там код написать?" и пишут такие ужасные вещи, что ими можно детей пугать.
В первую очередь порядок начинается с головы. Потом он переходит на те вещи, которые делаешь. Я допускаю единственный случай, когда можно тяп-ляп -- когда это поток творческого сознания и его нежелательно останавливать.
 
Кому как удобней. В конечном итоге лучший вариант под руку попадет в процессе масштабирования. DI лишь как паттерн, коих сотни, на вкус и цвет.
 
Вот я сурцы плагинов глядел и везде, ВЕЗДЕ статическая переменная в главном классе
И это ужасно 😕

Единственное оправдание getInstance может быть доступ из внешнего API, к счастью баккит предоставляет необходимый метод для получения доступа к API внешнего плагина не нарушая ООП.
 
Последнее редактирование:
И ни одного правильного скрина нет. А все потому что чувак не учил основы, не ипет что такое конструкторы.

Код:
public class EventListener implements Listener {
    //Доступ ко всем паблик главного класса.
    private Main plugin;

    public EventListener(Main plugin) {
        this.plugin = plugin;
    }
 
Вот я сурцы плагинов глядел и везде, ВЕЗДЕ статическая переменная в главном классе либо конструктор с обьектом JavaPlugin. И ниче, не развалились без твоих инъекций
Так в 95% плагинов говнокод лютый, DI это стандарт
 
Назад
Верх