реклама на сайте
подробности

 
 
26 страниц V  « < 3 4 5 6 7 > »   
Reply to this topicStart new topic
> Библиотеки для STM32
Эдди
сообщение Mar 28 2017, 11:05
Сообщение #61


Знающий
****

Группа: Участник
Сообщений: 825
Регистрация: 16-04-15
Из: КЧР, Нижний Архыз
Пользователь №: 86 250



Ну, я стараюсь только неочевидные вещи комментировать + для себя кой-какие заметки на будущее делать, вроде такого.
Go to the top of the page
 
+Quote Post
Obam
сообщение Mar 28 2017, 11:19
Сообщение #62


Знающий
****

Группа: Участник
Сообщений: 756
Регистрация: 14-11-14
Пользователь №: 83 663



Цитата(Baser @ Mar 28 2017, 14:14) *
2. Как выше в примере - число реальное, а единицы измерений неизвестно какие (мкс, мс, сек ??)
А через год нужно подкрутить код - и ищи концы по проекту. А так - комментарий присутствует sm.gif


Дарю:
#define _RTTPrsclr_15ms (480u)

#define _RTT_30ms (2)// по _RTT_15ms_Tick
#define _RTT_250ms (17)// по _RTT_15ms_Tick
#define _RTT_300ms (20)// по _RTT_15ms_Tick

PAUSE (_RTT_1500ms);

Как показывает опыт, экономить на топтании клавы не стОит. (:


--------------------
Пролетарий умственного труда.
Go to the top of the page
 
+Quote Post
juvf
сообщение Mar 29 2017, 04:54
Сообщение #63


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



есть такое...... хороший код в коментариях не нуждается.
у Genadi Zawidowski скорее не комментарии, а референс мануал на его API.

У Velund пустые, не нужные комментарии.... типа таких
Код
int a = 10; //создал переменную а, задал ей значение 10


Цитата(Baser @ Mar 28 2017, 15:14) *
2. Как выше в примере - число реальное, а единицы измерений неизвестно какие (мкс, мс, сек ??)
А через год нужно подкрутить код - и ищи концы по проекту. А так - комментарий присутствует sm.gif
Для этого не нужны комментарии, нужны правильные имена.
Код
t2 = _SET_TIMEOUT_MS(100);

GSMPower(0); - такой вызов без комментариев не очевиден
GSMPower(OFF), GsmModemPowerOff() или GsmModemOff() не нуждается в комментариях.

ps чужой код всегда плох. у каждого свой стиль, и только он true. Все остальное говнокод неправильное
Go to the top of the page
 
+Quote Post
Alechek
сообщение Mar 29 2017, 06:29
Сообщение #64


Профессионал
*****

Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882



Цитата(Шаманъ @ Mar 28 2017, 12:05) *
Комментариев мало не бывает wink.gif

И то правда.
Порой не хочется читать код, а просто прочитать по-русски, что же тут хотели сделать.
Бывает так, что комментарий верный, а вот в коде ошибка закралась....

Я, бывает, вначале комментариями пишу, что должно делаться, а потом уже эту последовательность последовательно превращааю в код.
Так как когда код уже написан, и в текущий момент времени понят тобой на 120%, то необходимость в комментариях (особенно развернутых) в этот момент вообще никак не очевидна.

Цитата(juvf @ Mar 29 2017, 09:54) *
GSMPower(0); - такой вызов без комментариев не очевиден
GSMPower(OFF), GsmModemPowerOff() или GsmModemOff() не нуждается в комментариях.


ИМХО, правильнее комментирование целого куска:

/* Выключаем модем правильно, см. ****pdf, 2.3.4 Power Down Cycle */
GSMPowerKey(1);
Delay(2000);
GSMPowerKey(1);
Delay(8000);
GSMPower(0);

Go to the top of the page
 
+Quote Post
ViKo
сообщение Mar 29 2017, 07:29
Сообщение #65


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Моё.
CODE

/*!****************************************************************************
@brief Voltage Battery conversion & check
@note Однократное преобразование напряжения литиевой батареи
@note Temp.sensor, VRefint измеряются перед VBat/2
*/
uint32_t Bat_check(void)
{
/* Сначала запустить и дождаться преобразования инжектированных каналов
2 * (480 + 12 cycles) : 32.8 us
Заодно сработает прерывание от ADC3 - проверка уровня заряда аккумулятора
Сбросить бит окончания преобразования инжектированных каналов */
ADC1->CR2 |= ADC_CR2_JSWSTART;
ADC3->CR2 |= ADC_CR2_JSWSTART;

while (!(ADC1->SR & ADC_SR_JEOC)) { }
ADC1->SR &= ~ADC_SR_JEOC;

/* Разрешить делитель напряжения батареи
Задержка для включения не нужна */
ADC->CCR |= ADC_CCR_VBATE;

/* Старт регулярного канала преобразования
Ожидать окончание преобразования, 480 + 12 cycles : 16.4 us */
ADC1->CR2 |= ADC_CR2_SWSTART;
while (!(ADC1->SR & ADC_SR_EOC)) { }

/* Запретить делитель напряжения батареи */
ADC->CCR &= ~ADC_CCR_VBATE;

/* Прочитать температурный датчик и опорное напряжение */
Sensors.Temp = ADC1->JDR1;
Sensors.Ref = ADC1->JDR2;

/* Прочитать напряжение батареи (умножить на 2)
При чтении DR автоматически сбрасывается бит окончания
преобразования регулярных каналов EOC
Для перевода в мВ измеренное значение нужно преобразовать по формуле:
mV = Data * 1210 / VRefData */
uint32_t Bat = (ADC1->DR << 1) * 1210 / Sensors.Ref;

/* Округлить и уменьшить в 10 раз */
if (Bat % 10 < 5) Bat = Bat / 10;
else Bat = Bat / 10 + 1;
// NumStat1_print(Bat);

/* Проверить, укладывается ли напряжение в допустимый диапазон */
return Bat;
}

Go to the top of the page
 
+Quote Post
Obam
сообщение Mar 29 2017, 07:36
Сообщение #66


Знающий
****

Группа: Участник
Сообщений: 756
Регистрация: 14-11-14
Пользователь №: 83 663



"Я, бывает, вначале комментариями пишу, что должно делаться, а потом уже эту последовательность последовательно превращааю в код."
Присоединяюсь…

"Так как когда код уже написан, и в текущий момент времени понят тобой на 120%, то необходимость в комментариях (особенно развернутых) в этот момент вообще никак не очевидна."
ОтлОжите его (этот код) не менее чем на пол-годика, займётесь каким-нибудь перпендикулярным проектом и после, вернувшись, похвАлите себя за то, что не зажмотились в "…комментариях (особенно развернутых)…"
Я гарантирую это (;


--------------------
Пролетарий умственного труда.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Mar 29 2017, 08:26
Сообщение #67


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(juvf @ Mar 29 2017, 06:54) *
У Velund пустые, не нужные комментарии.... типа таких
Код
int a = 10; //создал переменную а, задал ей значение 10

Согласен. Такие комментарии делают обратное - только ухудшают читаемость исходника, загромождая его.

Цитата(Alechek @ Mar 29 2017, 08:29) *
Порой не хочется читать код, а просто прочитать по-русски, что же тут хотели сделать.
Бывает так, что комментарий верный, а вот в коде ошибка закралась....

А бывает и наоборот.
Очень часто бывает (много раз сталкивался на практике), когда код написали вместе с комментами, а потом начали отлаживать-отлаживать-отлаживать. В результате код сильно изменился (до совершенно другого), а комменты каждый раз при отладке конечно лень менять. В результате получаем комменты не соответствующие коду, и наоборот - только вводящие в заблуждение.
Поэтому я, например, при первоначальном написании, комменты почти не пишу. А пишу их только когда исходник более-менее устаканится и заработает как надо.
Go to the top of the page
 
+Quote Post
Forger
сообщение Mar 29 2017, 16:47
Сообщение #68


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(jcxz @ Mar 29 2017, 11:26) *
Поэтому я, например, при первоначальном написании, комменты почти не пишу. А пишу их только когда исходник более-менее устаканится и заработает как надо.

В свое время, чтобы не метаться между разными способами оформления кода, мне помогла соответствующая литература.
Например, много лет назад, пригодилась эта: "Веревка достаточной длины, чтобы выстрелить себе в ногу", ее легко найти в гугле.
Правда, помню, что с многими моментами я там был не очень согласен. Это мягко говоря )))
Но потом попалась в руки эта книжка: Мартин - "Чистый код".
К тому моменту она была мне очень кстати - вычитал ее запоем всю до дыр sm.gif

Кто уже плотно сидит на "плюсах" и тем более уже созрел строить полноценный объектный код, используя всю мощь "плюсов", вторую книжка будет очень полезна, по крайней мере мне она очень пригодилась.
Благодаря этой книжке мне удалось составить собственную "конвенцию именования", очень лаконичную и простую, но при этом предельно однозначную, что значительно улучшило читаемость кода:
Прикрепленное изображение


ps, Картинка не ради разведения очередного холивара, а, просто - вдруг кому-то пригодится ))


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
juvf
сообщение Mar 30 2017, 09:39
Сообщение #69


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата(Forger @ Mar 29 2017, 21:47) *
В свое время, чтобы не метаться между разными способами оформления кода, мне помогла соответствующая литература...
не ради разведения очередного холивара, а, просто - вдруг кому-то пригодится ))

а мне помогла небольшая шпаргалка
Прикрепленные файлы
Прикрепленный файл  ________________________.pdf ( 534.14 килобайт ) Кол-во скачиваний: 117
 
Go to the top of the page
 
+Quote Post
Forger
сообщение Mar 30 2017, 10:34
Сообщение #70


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(juvf @ Mar 30 2017, 12:39) *
а мне помогла небольшая шпаргалка

Прям с языка сняли!!! sm.gif

Правда с некоторыми пунктами я не очень согласен, в частности с теми, которые имеют приписку "Это правило пришло из математики...".
Предпочитаю математику (да и не только математику, но и другие дисциплины) с ее короткими и малоинформативными именами и именами в коде не смешивать, не путать "мух с колетами" sm.gif
Скажем "скорость" называть не 'v', а как положено - velocity, т. е. в данных случаях сокращения, пришедшие из фундаментальных вековых дисциплин, могут сильно усложнить чтение кода.
Дело в том, что в те далекие времена английский не был, можно сказать, "всемирным" языком, и потому чаще всего использовались лишь сокращения от латинских названий терминов,
К тому же практически все писалось от руки.
Но те времена уже давно прошли, поэтому я лично не вижу никакого смысла цепляться за них в коде.

Например, вместо "i" использую переменную, носящую конкретный смысл для кода, где она используется: index, iterarator, value ..., составные: itemIndex, objectIterator и и т.п.
Но в примитивных случаях (скажем, цикл из одной строки), "классическое i" вполне сгодится, иначе увеличивается сложность чтения кода.

Для отладки полноценные имена (в том числи и счетчики циклов, итераторы и т. п.) тоже очень полезны - в окне watch переменные несут явный и однозначный смысл.
Разумеется, при условии, что переменные и объекты названы правильно sm.gif

Вообще, мне кажется, что самое сложный, но и самый полезный навык в программировании - умение правильно подбирать "сущностям" и "действиям" однозначные и лаконичные имена ....


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
Alechek
сообщение Apr 1 2017, 06:37
Сообщение #71


Профессионал
*****

Группа: Свой
Сообщений: 1 241
Регистрация: 15-11-05
Из: Челябинск
Пользователь №: 10 882



Цитата(Forger @ Mar 29 2017, 21:47) *
Благодаря этой книжке мне удалось составить собственную "конвенцию именования", очень лаконичную и простую, но при этом предельно однозначную, что значительно улучшило читаемость кода:

Если уж пошла такая пьянка по поводу стилей, то при переходе на C++ я решил придерживаться

https://google.github.io/styleguide/cppguide.html
Go to the top of the page
 
+Quote Post
Forger
сообщение Apr 1 2017, 09:25
Сообщение #72


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(Alechek @ Apr 1 2017, 09:37) *
Если уж пошла такая пьянка по поводу стилей, то при переходе на C++ я решил придерживаться

А почему лишь C++?
Я вот использую единые принципы именования и структурирования не только в С/С++ коде, но и в других языках, средах, CAD-ах и т. п.
Например, очень удобно писать код для МК, если цепи на схеме (AD) названы таким образом, что позволяет в коде использовать точно такие же имена для пинов.


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 1 2017, 16:24
Сообщение #73


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(jcxz @ Mar 29 2017, 11:26) *
Очень часто бывает (много раз сталкивался на практике), когда код написали вместе с комментами, а потом начали отлаживать-отлаживать-отлаживать. В результате код сильно изменился (до совершенно другого), а комменты каждый раз при отладке конечно лень менять. В результате получаем комменты не соответствующие коду, и наоборот - только вводящие в заблуждение.

Очень, очень массовое явление sad.gif. Особенно убивает, когда комментарий провильный, а то, что в исходнике с ошибкой.
Цитата
Поэтому я, например, при первоначальном написании, комменты почти не пишу. А пишу их только когда исходник более-менее устаканится и заработает как надо.

Именно так. Причем такое комментирование прекрасно совмещается с общей вычиткой и оптимизацией исходника.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Aaron
сообщение Apr 3 2017, 08:55
Сообщение #74


Местный
***

Группа: Свой
Сообщений: 243
Регистрация: 5-10-06
Из: Зеленоград
Пользователь №: 21 007



Цитата(juvf @ Mar 30 2017, 12:39) *
а мне помогла небольшая шпаргалка


Блин, товарищи, поздновато выложили sm.gif Как раз сейчас разродился наконец оформить требования к стилю кодирования в своём отделе, уже написал почти sm.gif Но всё равно подглядеть чужие готовые рекомендации незазорно, чтобы ничего не упустить!
Go to the top of the page
 
+Quote Post
Forger
сообщение Apr 3 2017, 09:06
Сообщение #75


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(Aaron @ Apr 3 2017, 11:55) *
Как раз сейчас разродился наконец оформить требования к стилю кодирования в своём отделе, уже написал почти
Я для своего отдела тоже задавался подобной целью, курил интернеты, читал соотв. книжки, но не прижилось в том виде, как я хотел.
Полагаю, что причина в том, что каждый работник тянет свои проекты в одиночку.
Проекты относительно небольшие, команда не требуется.
Поэтому каждый "ваяет" как пожелает.
Главное - положительный результат на выходе )))


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post

26 страниц V  « < 3 4 5 6 7 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 17th August 2025 - 23:07
Рейтинг@Mail.ru


Страница сгенерированна за 0.01937 секунд с 7
ELECTRONIX ©2004-2016