LoChat/MIGRATION_PLAN.md
2026-03-16 12:43:52 +01:00

5 KiB

План миграции команд на новую архитектуру

✅ Что уже сделано

1. Создана базовая архитектура

  • BaseCommand - базовый класс для всех команд
  • PlayerCommand - для команд игроков
  • AdminCommand - для административных команд
  • CommandManager - централизованное управление

2. Созданы категории команд

  • chat/ - команды чата
  • messaging/ - личные сообщения
  • social/ - социальные функции
  • moderation/ - модерация
  • admin/ - административные команды

3. Примеры новых команд

  • GlobalChatCommand (новая архитектура)
  • LocalChatCommand (новая архитектура)
  • MsgCommand (новая архитектура)
  • ReplyCommand (новая архитектура)
  • IgnoreCommand (новая архитектура)

🔄 План поэтапной миграции

Этап 1: Команды чата (ПРИОРИТЕТ 1)

  • GlobalChatCommand - создан
  • LocalChatCommand - создан
  • Тестирование и отладка
  • Замена в CommandManager

Этап 2: Личные сообщения (ПРИОРИТЕТ 1)

  • MsgCommand - создан
  • ReplyCommand - создан
  • Тестирование и отладка
  • Замена в CommandManager

Этап 3: Социальные команды (ПРИОРИТЕТ 2)

  • IgnoreCommand - создан
  • UnignoreCommand
  • IgnoreListCommand
  • NickCommand

Этап 4: Команды модерации (ПРИОРИТЕТ 2)

  • MuteCommand
  • UnmuteCommand
  • MuteListCommand
  • MuteHistoryCommand
  • MuteBlameCommand

Этап 5: Административные команды (ПРИОРИТЕТ 3)

  • AnnounceCommand
  • ClearChatCommand
  • ClearChatConfigCommand
  • ChatSpyCommand
  • LoChatCommand
  • ReloadConfigCommand
  • DiscordCommand

Этап 6: Специальные команды (ПРИОРИТЕТ 4)

  • CustomCommandsCommand
  • Кастомные команды из custom/

🛠️ Процесс миграции одной команды

1. Создание новой команды

public class NewCommand extends PlayerCommand {
    public NewCommand(LoChat plugin) {
        super(plugin);
    }
    
    @Override
    protected boolean executePlayerCommand(Player player, Command command, 
                                         String label, String[] args) {
        // Логика команды
        return true;
    }
}

2. Тестирование

  • Проверка функциональности
  • Проверка прав доступа
  • Проверка обработки ошибок

3. Замена в CommandManager

// Было:
registerOldCommand("command", new OldCommand(plugin));

// Стало:
registerCommand("command", new NewCommand(plugin));

4. Удаление старой команды

  • Удалить файл старой команды
  • Убрать импорты

📋 Чек-лист для каждой команды

Обязательные проверки:

  • Наследуется от правильного базового класса
  • Правильная проверка прав доступа
  • Обработка ошибок
  • Валидация аргументов
  • Сообщения из конфигурации
  • TabCompleter (если нужен)

Тестирование:

  • Команда выполняется корректно
  • Права доступа работают
  • Ошибки обрабатываются
  • Автодополнение работает
  • Нет дублирования кода

🎯 Ожидаемые результаты

После полной миграции:

  • Сокращение кода на 40-50%
  • Устранение дублирования проверок
  • Единообразная обработка ошибок
  • Простота добавления новых команд
  • Лучшая читаемость кода
  • Соответствие SOLID принципам

Метрики качества:

  • Цикломатическая сложность: ↓ 30%
  • Дублирование кода: ↓ 60%
  • Покрытие тестами: ↑ 80%
  • Время разработки новых команд: ↓ 50%

🚀 Следующие шаги

  1. Протестировать созданные команды
  2. Мигрировать команды по приоритету
  3. Обновить документацию
  4. Создать примеры для разработчиков
  5. Настроить автотесты