Помощь в оптимизации кода
- Войдите на сайт для отправки комментариев
Пт, 07/09/2018 - 05:24
Добрый день. в програмировании не очень силен, но случилось так что нужно написать софт
общая суть:
имеем 4 переменных, для которых есть верхняя и нижняя граница, которые нужно регулировать кнопками, три кнопки: переключение между параметрами, кнопка +, кнопка -
сейчас для каждой кнопки написан такой код на настройку нижней граници:
void minimumA() { if (key == 1) { if (millis() - previousMillis > 500) { previousMillis = millis(); minA = minA - 0.1; } } if (key == 2) { if (millis() - previousMillis > 500) { previousMillis = millis(); minA = minA + 0.1; } } if (minA > max) { minA = max; } if (minA < min) { minA = min; } }
и такой на настройку верхней граници:
void maximumA()// процедура перемещения по меню { if (key == 1) { if (millis() - previousMillis > 500) { previousMillis = millis(); maxA = maxA - 0.1; } } if (key == 2) { if (millis() - previousMillis > 500) { previousMillis = millis(); maxA = maxA + 0.1; } } if (maxA > max) { maxA = max; } if (maxA < min) { maxA = min; } }
Аналогично есть процедуры для B,C,D, тоесть еще 6 аналогичных процедур.
Интересует возможно ли это реализовать в 1-2 процедуры средствами ООП?
дописал остальной функционал проэкта, и не хватает памяти на ардуино нано 328р, а другую ардуинку не могу использовать...
помогите советом пожалуйста. Заранее спасибо
Можно, конечно, и средствами ООП, но первое, что напрашивается, - это если передавать процедуре параметры, достаточно и ее одной.
Подожди Пуха, у него классов как авна за баней. Мошт и такие есть.
Подожди Пуха, у него классов как авна за баней. Мошт и такие есть.
Обижаешь, "мошт есть". Точно есть, без всяких там мошт :)
Можно, конечно, и средствами ООП, но первое, что напрашивается, - это если передавать процедуре параметры, достаточно и ее одной.
увы, но не так(
остальные процедуры реализованы аналогично,вот пример по переменной В
Подожди Пуха, у него классов как авна за баней. Мошт и такие есть.
вот тут в точку))
пытался сделать все универсально, но не все получилось реализовать....
увы, но не так(
остальные процедуры реализованы аналогично,вот пример по переменной В
Что "увы" ? Вы вообще поняли, что Вам посветовали? вынесите переменную minb в параметр - и запросто сможете заменить все восемь функций на одну
да няхай
TMinMaxValue A(0.0, 0.1, 0.0, 100.0);
TMinMaxValue B(0.0, 0.1, 0.0, 200.0);
TMinMaxValue C(0.0, 0.1, 0.0, 300.0);
TMinMaxValue D(0.0, 0.1, 0.0, 400.0);
Потом if (key==1) A.StepDown(); else A.StepUp();
гарантированно A.fvalue за Min & Max не вывалятся. (ну если только я не ошибся нигде спахмелья);
а можно еще апираторы перегрузить, будет изящнее. Но мне лень.
А истинные паскалисты Min и Max не должны прятать в private section?
А истинные паскалисты Min и Max не должны прятать в private section?
с точки зренья ООП - должны. Но get/set еще писать мне лень. Пусь ТС дорабатывает, направление я дал, раз Пух молчит.
Но, думаю, у него с классами это не только в память не влезет, но еще и кристалл растрескает.
А истинные паскалисты Min и Max не должны прятать в private section?
А хто такие "истинные паскалисты"? Давно известно, что "настоящие программисты не используют Паскаль". Его используют сосунки. А "кому какое что" до того, кому и что должны сосунки?
ну, это которые setЧТО-ТО / getЧТО-ТО пишут, полагаю. В тех немногих ЯП, с которыми я сталкивался, только в Паскакале такой синтаксис/способ протекции насаждался.
ну, это которые setЧТО-ТО / getЧТО-ТО пишут, полагаю. В тех немногих ЯП, с которыми я сталкивался, только в Паскакале такой синтаксис/способ протекции насаждался.
в Паскале свойства есть, а туть всё ручками.
ну, это которые setЧТО-ТО / getЧТО-ТО пишут, полагаю. В тех немногих ЯП, с которыми я сталкивался, только в Паскакале такой синтаксис/способ протекции насаждался.
Та, нет, что Вы, акцессоры много где есть (тот же JS - да много где). Да и для С++ масса библиотек шаблонов, где это реализуется.
Подожди Пуха, у него классов как авна за баней. Мошт и такие есть.
вот тут в точку))
пытался сделать все универсально, но не все получилось реализовать....
Аналогично есть процедуры для B,C,D, тоесть еще 6 аналогичных процедур.
Интересует возможно ли это реализовать в 1-2 процедуры средствами ООП?
Это можно сделать и без средств ООП, простой декомпозицией, например:
Как видишь - можно одной функцией однотипный код использовать повторно. Мой пример, конечно, сильно в лоб, и служит только для демонстрации подхода к декомпозиции (сиречь - отделения мух от котлет, т.е. - отделения алгоритма работы с данными от конкретных данных).