Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Felix Felicis
3 / 2 / 2
Регистрация: 31.05.2015
Сообщений: 126
1

Оптимизация кода

22.03.2018, 08:11. Просмотров 506. Ответов 8
Метки нет (Все метки)

Доброго времени суток.
Прошу прощения, если буду ошибаться в терминах, но постараюсь правильно разъяснить проблему.

Пишу приложение в winForms, код составляет уже 1000 строк, а это ещё и трети приложения не написано.
Как можно некоторые методы переместить в отдельные файлы ( в создаваемый файл класса) и уже вызывать их? И хотелось бы переменные тоже в отдельный класс кинуть, откуда они считывались бы, а то там есть массивы и много места занимают.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2018, 08:11
Ответы с готовыми решениями:

Оптимизация кода
Доброй ночи! Подскажите, пожалуйста, или приведите пример как упростить этот код. Программа должна...

Оптимизация кода
Добрый день! Может ли кто-нибудь подсказать, возможна ли оптимизация (сокращения строк, без...

Оптимизация кода
Есть такая статья http://habrahabr.ru/post/165729/. Но в ней перечислена лишь малая часть возможных...

Оптимизация кода
Добрый вечер, господа! В данный момент я пишу тулзу для демонстрации алгоритмов оценки движения и...

Оптимизация кода
Можно ли это как то оптимизировать? public void Vn_Method(int a,ref Button btn1, ref Button btn2,...

8
kolorotur
Эксперт .NET
11600 / 9358 / 2382
Регистрация: 17.09.2011
Сообщений: 16,016
Завершенные тесты: 1
22.03.2018, 09:42 2
Цитата Сообщение от Felix Felicis Посмотреть сообщение
код составляет уже 1000 строк
Это не так много.
Размер одного класса.

Цитата Сообщение от Felix Felicis Посмотреть сообщение
Как можно некоторые методы переместить в отдельные файлы ( в создаваемый файл класса) и уже вызывать их? И хотелось бы переменные тоже в отдельный класс кинуть, откуда они считывались бы
Похоже, что на данный момент у вас есть одна большая куча всего подряд, которую вы хотите разбить на две кучи по-меньше.
Тупиковый вариант. Лучше подумайте как следует об архитектуре своего приложения: для чего оно нужно, что оно будет делать, из каких частей оно состоит и какая часть за что отвечает. Вот эта каждая часть и будет отдельным классом с ровно одной-единственной обязанностью.

Цитата Сообщение от Felix Felicis Посмотреть сообщение
там есть массивы и много места занимают
В коде?
0
Felix Felicis
3 / 2 / 2
Регистрация: 31.05.2015
Сообщений: 126
22.03.2018, 09:53  [ТС] 3
Цитата Сообщение от kolorotur Посмотреть сообщение


Похоже, что на данный момент у вас есть одна большая куча всего подряд, которую вы хотите разбить на две кучи по-меньше.
Тупиковый вариант. Лучше подумайте как следует об архитектуре своего приложения: для чего оно нужно, что оно будет делать, из каких частей оно состоит и какая часть за что отвечает. Вот эта каждая часть и будет отдельным классом с ровно одной-единственной обязанностью.
Именно.
Пишу бота. Есть несколько локаций, где нужно, к примеру, собирать ресурсы. На каждую локацию написан свой метод. Хочу сделать, чтобы каждый метод был в отдельных классах, если так можно, чтобы не путаться в куче названий и действий.
Цитата Сообщение от kolorotur Посмотреть сообщение

В коде?
Да, объявляю переменные. Самих переменных уже штук 20 и массивов штуки 4 , которые состоят из порядка 20 значений.


P.S. для меня это первый проект и это уже для меня много. И так стараюсь все скоращать
0
VladPVS
183 / 162 / 99
Регистрация: 14.03.2018
Сообщений: 426
Завершенные тесты: 2
22.03.2018, 10:11 4
Обычно выделяют определённую сущность, обладающую набором свойств, поведением и для неё создают класс. Ну и правило хорошего тона - каждый класс хранить в отдельном .cs файле, потом разбираться проще будет.
0
22.03.2018, 10:11
Sternman
57 / 58 / 28
Регистрация: 10.01.2018
Сообщений: 357
Завершенные тесты: 2
22.03.2018, 11:15 5
Цитата Сообщение от Felix Felicis Посмотреть сообщение
переменные тоже в отдельный класс кинуть
вот это уже делать не нужно. В одной умной книге написано, между глобальной переменной и местом её использования должно быть как можно меньше строк кода.
Цитата Сообщение от Felix Felicis Посмотреть сообщение
Хочу сделать, чтобы каждый метод был в отдельных классах
А смысл? таким образом у вас будет больше строк кода но эффект тот же, только больше набирать символов чтоб до метода добраться. Как вам уже сказали
Цитата Сообщение от VladPVS Посмотреть сообщение
Обычно выделяют определённую сущность, обладающую набором свойств, поведением и для неё создают класс.
класс ради 1 метода не стоит создавать.
Цитата Сообщение от Felix Felicis Посмотреть сообщение
На каждую локацию написан свой метод
Сделайте отдельный метод на каждое действие, а не на локацию. И в зависимости от локации передавайте необходимые параметры в метод.
1
VladPVS
183 / 162 / 99
Регистрация: 14.03.2018
Сообщений: 426
Завершенные тесты: 2
22.03.2018, 11:19 6
Цитата Сообщение от Sternman Посмотреть сообщение
класс ради 1 метода не стоит создавать.
Конечно не нужно, о этом речь и идёт. Нужно в ОО-языке использовать ОО-стиль, а не процедурный.
0
Felix Felicis
3 / 2 / 2
Регистрация: 31.05.2015
Сообщений: 126
22.03.2018, 11:33  [ТС] 7
Цитата Сообщение от Sternman Посмотреть сообщение
Сделайте отдельный метод на каждое действие, а не на локацию. И в зависимости от локации передавайте необходимые параметры в метод.
Основа бота - поиск фрагмента картинки на экране. Если нашлось, то нужно кликнуть. Если нет, то либо ещё раз пытаться найти, либо дальше следовать.
Примерная работа :
Есть метод поиска картинки на экране и получения координат.
Есть массив ссылок на картинки, которые лежат в ресурсах.
(Дальше порядок при идеальной работе, без забоев и лишних выскакивающих окнах в игре)

Берется первое изображение, прогоняется в методе поиска , получаю координаты, по этим координатам делаю клик и перехожу ко второй картинке. Если вторую картинку не нашел, то иду к третьему изображению, если найдено, то перехожу в метод работы с новой локацией и беру из нового массива изображений картинку для второй локации и так же работаю с ней, когда со второй локацией заканчиваю, то продолжаю в первой локации искать третье изображение. И т.д.
Надеюсь, что не запутал.

Так что к чему это я - я сделал для каждой локации массив изображений и с ними работаю в пределах локации - так плохо?

P.s. пока писал, подумал, что возможно и есть смысл для каждого изображения сделать свой метод, чтобы просто ссылаться на это действие, но тогда код точно в разы станет больше - или не стоит этого бояться?
0
Sternman
57 / 58 / 28
Регистрация: 10.01.2018
Сообщений: 357
Завершенные тесты: 2
22.03.2018, 13:40 8
Цитата Сообщение от Felix Felicis Посмотреть сообщение
или не стоит этого бояться?
стоит бояться того что ваш бот будет цп грузить больше чем сама игра. а так оно и будет скорее всего, сравнивать постоянно свыше 20 изображений с картинкой на мониторе не самая простая задача. Постарайтесь разобраться с адресами в памяти игры. Если вам нужен полноценный бот. вот это будет действительно оптимизация бота. всё остальное по большому счету покраска газона перед приездом генерала. Если вы не собираетесь продавать код бота, и отлично в нем ориентируетесь, то делайте как умеете, если не забросите то со временем будете переделывать в зависимости от получения новых знаний. Это с личного опыта говорю. Если сразу есть желание писать красивый код, читайте книги специальные, например "Стив Макконнелл Совершенный код". Всё не запомните конечно с первого раза, уж очень много там информации, но что-то полезное узнаете.
1
Felix Felicis
3 / 2 / 2
Регистрация: 31.05.2015
Сообщений: 126
22.03.2018, 13:42  [ТС] 9
Цитата Сообщение от Sternman Посмотреть сообщение
стоит бояться того что ваш бот будет цп грузить больше чем сама игра. а так оно и будет скорее всего, сравнивать постоянно свыше 20 изображений с картинкой на мониторе не самая простая задача. Постарайтесь разобраться с адресами в памяти игры. Если вам нужен полноценный бот. вот это будет действительно оптимизация бота. всё остальное по большому счету покраска газона перед приездом генерала. Если вы не собираетесь продавать код бота, и отлично в нем ориентируетесь, то делайте как умеете, если не забросите то со временем будете переделывать в зависимости от получения новых знаний. Это с личного опыта говорю. Если сразу есть желание писать красивый код, читайте книги специальные, например "Стив Макконнелл Совершенный код". Всё не запомните конечно с первого раза, уж очень много там информации, но что-то полезное узнаете.
Хотелось бы бота на продажу.
Берет 36-40 мб оперативы максимум. Стоит сборщик мусора GC.Collect , если не изменяет память
0
22.03.2018, 13:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.03.2018, 13:42

Оптимизация кода
Вопрос такой есть ли способ оптимизировать сей код, прибегая к помощи массивов или иными путями?...

Оптимизация кода
Есть кусок кода: public static void NOCH (object source, ElapsedEventArgs e) { ...

Оптимизация кода
Возможно ли заменить быдло-код проверки - пуста ли строка и появления картинки возле неё? ...


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

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

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