5 KiB
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- созданUnignoreCommandIgnoreListCommandNickCommand
Этап 4: Команды модерации (ПРИОРИТЕТ 2)
MuteCommandUnmuteCommandMuteListCommandMuteHistoryCommandMuteBlameCommand
Этап 5: Административные команды (ПРИОРИТЕТ 3)
AnnounceCommandClearChatCommandClearChatConfigCommandChatSpyCommandLoChatCommandReloadConfigCommandDiscordCommand
Этап 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%
🚀 Следующие шаги
- Протестировать созданные команды
- Мигрировать команды по приоритету
- Обновить документацию
- Создать примеры для разработчиков
- Настроить автотесты