105 / 11 / 7
Регистрация: 06.07.2013
Сообщений: 233
1

Нужна подскажите по рефакторингу кода

23.05.2019, 10:07. Показов 510. Ответов 1

Добрый день.
Решил написать бота для одной ККИ на основе OpenCV. Стал представлять игровой процесс как набор состояний, на которые бот должен реагировать. Начал описывать эти состояния. Когда класс отвечающий за определение текущего состояния игры стал приближаться к 700 строкам кода, а тесты к этому классу к 500 строкам начал думать, что наверное, наверное я что-то делаю не так. ) Причем это примерно две трети состояний, за которыми мне нужно следить. До поведения как вы понимаете я пока так и не добрался.

Думал разбить эту кашу на отдельный классы тем более, что я их уже в коде делю на регионы, но иногда невозможно определить одно конкретное состояний по изображению. Приходится прежде чем сделать вывод, что это состояние "C" проверить, что это не состояние "A" и не "B", а они из других регионов.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        private bool CheckGgsGameModesTab(Mat gameScreen)
        {
            var fullRectGameScreen = new Rect(0, 0, gameScreen.Width, gameScreen.Height);
            using (var localGameScreen = new Mat(gameScreen, fullRectGameScreen))
            {
                if (CheckFgssMatchSettings(gameScreen))
                    return false;
 
                var tempPos = PatternSearchRoi(localGameScreen,
                        new Mat(@"ComputerVision\PatternsForCV\GlobalGameStates\GameModesTab-DeckDropDownArrow.jpg"),
                        new Rect(493, 363, 46, 37));
 
                return (tempPos != Rect.Empty);
            }
        }
Я временно сделал публичным проект на GitHub: Тык
Мне нужна помощь с классом OpenCvGwentStateChecker

Просто подскажите в какую сторону двигаться, чтобы упростить эту кашу.
Спасибо.

PS
Простите за колечное название темы, ошибся. Валидатор заголовков тем меня мурыжил...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.05.2019, 10:07
Ответы с готовыми решениями:

Литература по рефакторингу
Подскажите какую-нибудь простенькую книгу по рефакторингу, желательно с простыми и понятными...

Упражнение по рефакторингу
Предлагаю Вашему вниманию пример кода. Мне бы хотелось узнать, какие бы шаги Вы предприняли для...

Рекомендация по рефакторингу системы мониторинга(см в нутри)
Господа в общем такая затея, есть графики код брал от сюда процедурное программирование, будет...

Нужна информация кода
Здравствуйте, программисты. Нужна помощь. Дан код, см. ниже, нужно написать к каждой строке что оно...

1
907 / 792 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
23.05.2019, 10:16 2
ATop, методы из ряда Check...... на текущий момент отличаются только названием картинки, так почему бы не сделать 1 метод и ему вторым параметром передавать это название?

p.s. в рамках тех регионов как есть там, но в целом можно все эти методы выделить в единое, где-то они дополнительно отличаются только числами, которые тоже можно передавать как параметры
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.05.2019, 10:16

Нужна проверка кода
>>> from PIL import Image, ImageDraw >>> image = Image.new("RGB", (320,320), (0,0,0,0)) >>> draw...

Нужна розшифровка кода
DOTable1->DisableControls(); //Вимкнення поточного контролю AnsiString asStr(""); TStringList...

Нужна оптимизация кода
Помогите оптимизировать следующий фрагмент кода let out= На "вход" подается input из 8 000 000...

Кусок кода нужна пмощь!
Что это за камеры тут светятся?!!! :) Объясните кто нить! можно ли их привязать как либо, да...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.