Ну хорошо, наверняка здесь есть хорошо владеющие СИ, вот прокомментируйте сей код, насколько он кошмарный/некошмарный, само устройство на нем работает как я и задумывал, но может как-то можно код сократить/улучшить без потери функциональности? Если кому понадобится могу скинуть весь проект+схема в протеусе. Кто что скажет?
Добавлено after 3 minutes 51 second: Обновил сообщение.
signed char back,countdown,cor,correct,timer_count,tt,tt_2,timer_count_2;
unsigned int temp,temper,mint,maxt,bc,dreb_2,dreb_3,rele,count_mic,count_pirkor, count_pirtua,count_gerkon_1,ohtik,count_gerkon_2,vc,volt,volter,tnochnik,ttimer,t_count, end_tt,ttimer_2,t_count_2,end_tt_2,copy_temp,tshkaf,qq,yy,rr,mem,eeppp,func;
Понимаю. Тогда как сделать сравнение всех тех переменных находящихся в ОЗУ с их значениями в EEPROM ?
Добавлено after 2 minutes 10 seconds: Согласен, в куче. Но я свободно ориентируюсь , возможно потому что сам составлял. По той же причине мне непонятен любой чужой код.Ну так как насчет сравнения переменных в епром?
Карма: 38
Рейтинг сообщений: 618
Зарегистрирован: Пн апр 06, 2015 11:01:53 Сообщений: 3092 Откуда: москва, уфа
Рейтинг сообщения:0
код ну совсем ужасен, честно. Отмазка "я в нем разбираюсь" не принимается. 1) форматирование. Отступ - три или четыре пробела, а не один. 2) магические числа везде. Не должно такого быть, менять на константы или дефайны с осмысленными именами. 3) из названия функции должно быть понятно, что она делать. Вот что за temperature()? 4) откройте для себя switch 5) раз пишете сообщения и идентификаторы по английски и знаете его плохо, пользуйтесь переводчиком. Хотя бы для сообщений. 6) огромные цепочки условий в if-ах сокращаем и упрощаем. Думаем, как. В самом крайнем случае, если с ними вообще сделать ничего нельзя (что обычно не так) - выделяем скобками логически связанные блоки 7) не стесняемся использовать массивы и структуры вместо кучи переменных с индексами. Это к мешанине hour_al_1 и иже с ним. избавляйтесь от кучи одинаковых функций, все отличие которых - разные переменные. Сему способствует пункт 7.
Так, по магическим числам поясните,непонятно. Чем свитч лучше чем иф? Не понял про идентификаторы. Но повторюсь, мне в нем всё понятно, но насчет уменьшения размера кода полностью согласен.
**избавляйтесь от кучи одинаковых функций, все отличие которых - разные переменные. Сему способствует пункт 7.** и с этим согласен, но подскажите как? На простом примере.
Ну например куча сравнений переменных с их значениями в еепром, как записать это компактней? Ну если конечно это приведет к уменьшению размера кода, а иначе нет смысла заморачиваться.
Карма: 90
Рейтинг сообщений: 1432
Зарегистрирован: Чт мар 18, 2010 23:09:57 Сообщений: 4585 Откуда: Планета Земля
Рейтинг сообщения:0 Медали: 1
ra9ust писал(а):
куча сравнений переменных с их значениями в еепром, как записать это компактней?
Кучу переменных - никак. Объединяйте все переменные, логически связанные друг с другом, в структуры. А две одинаковые структуры сравниваются элементарно - в цикле, через указатель, пробегаемся по всем байтикам и сравниваем их.
PS: Надеюсь, что такое структуры и указатели не нужно рассказывать ? Если что, всё гуглится без проблем.
что такое 14? 72? 60? 93? 90? 0b0111111110010000? 0x42? Это и есть magic numbers - какие-то числа, что-то там означающие, но неизвестно что. Они все должны быть константами, дефайнами или энумами с осмысленными именами.
**избавляйтесь от кучи одинаковых функций, все отличие которых - разные переменные. Сему способствует пункт 7.** и с этим согласен, но подскажите как? На простом примере.
А вот вместо трешища короткая запись, это спасибо, примем к сведению. Ну а транслит и всё такое это просто на скорую руку, а потом так и осталось. А код правда мне понятен, ну видимо у кажного свое восприятие/написание.
Ну хорошо, наверняка здесь есть хорошо владеющие СИ, вот прокомментируйте сей код, насколько он кошмарный/некошмарный, само устройство на нем работает как я и задумывал, но может как-то можно код сократить/улучшить без потери функциональности? Если кому понадобится могу скинуть весь проект+схема в протеусе. Кто что скажет?
Мне сегодня сказали, что в четверг будет конец света - что-то там связанное с Юпитером и Венерой. Я не очень поверил поначалу, но теперь всё понял: не качайте архив!!!
Налицо ( как минимум ) куча ненужных проверок. Например, для чего постоянно проверять изменение минут, часов и др., если это требуется только при очередном изменении секунд? т.е. вместо
В целом, я-бы всё совсем по-другому написал. Код, это просто п...ц, согласен с вышенаприведенными резюме. Мне вот этого ( в одном месте функции, мля!!! )
Код:
... tal++; tr++; a++; b++; tpirr++; tpirrr++; ...
тоже хватило, чтобы остающуюся часть "нетленки" уже не читать, тут уже явно с логикой проблемы. В програмиировании на Си подобная "штыковая атака" не прокатит, вы саму методологию игнорируете. Оно, возможно, даже будет работать, но я сочувствую человеку ( вы вполне можете оказаться этим человеком через полгода ), которому понадобится что-то исправить/дописать.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 29
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения