Rehber Main Class Yanlış Kullanımı ve Doğru Plugin Mimarisi | Eklenti Yazma Dersleri – Bölüm 4

  • Konuyu Başlatan Konuyu Başlatan ByVoxar
  • Başlangıç tarihi Başlangıç tarihi
  • Görüntüleme 109
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

ByVoxar

Umutsuz durumlar yoktur, umutsuz insanlar vardır.
Yıldız Destek
Süper Destek
Onaylı Satıcı
Katılım
24 Nisan 2025
Mesajlar
1.002
Elmaslar
279
Puan
3.880
Yaş
15
Konum
Kocaeli
Minecraft
ByVoxar

Discord:

ByVoxar

Main Class Yanlış Kullanımı ve Doğru Plugin Mimarisi

Main Class Ne DEĞİLDİR?

Main Class pluginin beyni değildir!

- Tüm kodların yazıldığı yer değildir
- Event listenerların tutulduğu yer değildir
- Oyun mantığının(logic) bulunduğu yer değildir
- Veri işlemlerinin yapıldığı yer değildir
- Herşeyi yapan dev bir sınıf değildir


Main Class NE Olmalıdır?

Main Class yalnızca bir kontrol merkezidir

- Pluginin başlatıldığı ve durdurulduğu yer
- Diğer sistemleri koordine eden merkez
- Managerları başlatan kontrol noktası
- Temel yapılandırmaları yükleyen birim
- Bağımlılıkları organize eden yapı


❌ YANLIŞ: Her Şey Main Class'ta


Kod:
public class MyPlugin extends JavaPlugin {
    
    @Override
    public void onEnable() {
        // Event'ler burada
        getServer().getPluginManager()
            .registerEvents(new Listener() {
            @EventHandler
            public void onJoin(PlayerJoinEvent e) {
                // Mantık burada
                // Veri işleme burada
                // Her şey burada!
            }
        }, this);
        
        // Komutlar burada
        // Config burada
        // Database burada
        // 500 satır kod...
    }
}

✅ DOĞRU: Temiz ve Organize

Kod:
public class MyPlugin extends JavaPlugin {
    
    private EventManager eventManager;
    private CommandManager commandManager;
    private ConfigManager configManager;
    private DatabaseManager databaseManager;
    
    @Override
    public void onEnable() {
        configManager = new ConfigManager(this);
        databaseManager = new DatabaseManager(this);
        eventManager = new EventManager(this);
        commandManager = new CommandManager(this);
        
        configManager.load();
        databaseManager.connect();
        eventManager.register();
        commandManager.register();
    }
    
    @Override
    public void onDisable() {
        databaseManager.disconnect();
    }
}

Doğru Paketleme Yapısı

Kod:
com.pluginadim
├── MyPlugin.java (Main Class)
├── commands/
│   ├── CommandManager.java
│   ├── TeleportCommand.java
│   └── StatsCommand.java
├── events/
│   ├── EventManager.java
│   ├── PlayerJoinListener.java
│   └── BlockBreakListener.java
├── managers/
│   ├── ConfigManager.java
│   ├── DatabaseManager.java
│   └── PlayerDataManager.java
├── utils/
│   ├── MessageUtil.java
│   └── PermissionUtil.java
└── models/
    └── PlayerData.java

Sistemlerin Birbirinden Ayrılması
Her sistem kendi sorumluluğuna odaklanır!

Event Manager
Tüm event listenerları yönetir ve kaydeder

Config Manager
Ayar dosyalarını okur ve yönetir

Command Manager

Komutları organize eder ve kayıt eder

Database Manager

Veritabanı bağlantılarını kontrol eder

Neden Bu Kadar Önemli?

Temiz Mimari Sağlar:

- Okunabilirlik: Kod kolayca anlaşılır
-
Sürdürülebilirlik: Değişiklikler kolay yapılır
-
Test Edilebilirlik: Her parça ayrı test edilebilir
-
Yeniden Kullanılabilirlik: Modüller başka projelerde kullanılabilir
-
Takım Çalışması: Farklı kişiler farklı sistemlerde çalışabilir
-
Hata Bulma: Sorunları bulmak çok daha kolay

Karşılaştırma

Kötü Mimari
- 1000+ satır Main class
- Kod tekrarı
- Hata bulma zorluğu
- Değişiklik yapmak çok zor
- Yeni özellik eklemek kabus
- Başkaları kodunuzu anlayamaz

İyi Mimari

- 50-100 satır Main class
- Temiz ve düzenli kod
- Hızlı hata çözümü
- Kolay değişiklikler
- Yeni özellik eklemek kolay
- Herkes kodu anlayabilir

Hatırlanması Gerekenler:

- Main Class = Kontrol Merkezi, beyin değil!
- Her sistem
ayrı sınıfta olmalı
- Doğru
paketleme yapısı kullan
- Kod
okunabilir ve sürdürülebilir olmalı
- Her sınıf
tek bir sorumluluğa sahip olmalı
 
Güzel faydalı bir konu olmuş optimizasyon için de önemlidir büyük ihtimalle.
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

Hala Discord sunucumuza katılmadın mı?

Büyük bir topluluğun parçası ol, etkinliklere katıl ve özel hediyeler kazanma şansı yakala!

Şimdi Katıl
Üst