Size: a a a

2020 August 02

DD

Davydov Denis in ru_ASUTP
Крылатый Пегас
Дык почти всё можно в компилтайме посчитать, красота.)
мое мнение, что негативно на язык влияет необходимость прямой работы с памятью для обратной совместимости, в связи с чем в каждом новом стандарте появляются все более изощренные конструкции работы с ней, чтобы подтянуть язык до уровня удобства работы как на современных высокоуровневых языках, а по факту сильно усложняя его
источник

КП

Крылатый Пегас... in ru_ASUTP
Konstantin Wilhelm
Какие МК используете?
Я упоротый, так что K1921BK01T. (:
источник

KW

Konstantin Wilhelm in ru_ASUTP
Davydov Denis
так вот наглядность обратно пропорциональна количеству кода... именно поэтому я и люблю код на js, и ненавижу на java, а еще я люблю делать короткие имена локальных переменных
Ну если бы всё было именно так, то самым наглядным был бы обфусцированный код...
источник

DD

Davydov Denis in ru_ASUTP
Konstantin Wilhelm
Ну если бы всё было именно так, то самым наглядным был бы обфусцированный код...
ну в пределах разумного же :)
источник

KW

Konstantin Wilhelm in ru_ASUTP
Крылатый Пегас
Я упоротый, так что K1921BK01T. (:
Кортекс М4?
источник

КП

Крылатый Пегас... in ru_ASUTP
Konstantin Wilhelm
Кортекс М4?
Ага
источник

DD

Davydov Denis in ru_ASUTP
просто я не вижу смысла называть локальную перемернную

ServerNodeArrayLength

когда можно назвать ее

len

и в коде она не будет мне растягивать строку за пределы видимости текстового редактора
источник

DD

Davydov Denis in ru_ASUTP
но почему-то любителей переменных с "глубоким смыслом" все равно это не останавливает
источник

KW

Konstantin Wilhelm in ru_ASUTP
Davydov Denis
ну в пределах разумного же :)
Я понял о чём вы, но там много критериев, количество кода хотя и важный, но далеко не определяющий. Структура и стиль бывают важнее
источник

КП

Крылатый Пегас... in ru_ASUTP
Код всё же и человек читает. Хорошо бы, чтобы другой завсегда разобраться мог. (:
источник

DD

Davydov Denis in ru_ASUTP
Крылатый Пегас
Код всё же и человек читает. Хорошо бы, чтобы другой завсегда разобраться мог. (:
для этого придумали комментарии :)
источник

KW

Konstantin Wilhelm in ru_ASUTP
Davydov Denis
для этого придумали комментарии :)
Которые пишут только лузеры 😀
источник

КП

Крылатый Пегас... in ru_ASUTP
Davydov Denis
для этого придумали комментарии :)
Да не, не только лишь. Сама конструкция тоже должна быть понимаемой. А то понапишут условие на отрицаниях и сиди мозг ломай, рисуй таблицу, как оно работает... ЧСХ, пишется сходу всегла так, а читать это ну ужас
Ну, это один из примеров.
источник

DD

Davydov Denis in ru_ASUTP
ну у меня в среднем на 50 строк кода один комментарий выходит... остальной код и так понятно как работает и не вызывает особо вопросов... но в Си этот процент гораздо выше, тк требует иногда не совсем очевидных конструкций, типа как в примере выше... но тут других вариантов нет, или страшный, но оптимизированный код, или наоборот
источник

DD

Davydov Denis in ru_ASUTP
Крылатый Пегас
Да не, не только лишь. Сама конструкция тоже должна быть понимаемой. А то понапишут условие на отрицаниях и сиди мозг ломай, рисуй таблицу, как оно работает... ЧСХ, пишется сходу всегла так, а читать это ну ужас
Ну, это один из примеров.
во, вот именно в таких местах у меня и бывают комментарии... ну и стараюсь перед каждой функцией тоже ставить, тем более если там полно логических операций
источник

DD

Davydov Denis in ru_ASUTP
типа тут и так все ясно

void fRead(uint16_t addr, void *data, uint32_t size) {
 uint8_t cmd[3];
 
 // читаем память
 cmd[0] = 0x03;
 cmd[1] = addr >> 8;
 cmd[2] = addr & 0xFF;
 
 HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_RESET);
 HAL_SPI_Transmit(&hspi2, cmd, 3, 100);
 HAL_SPI_Receive(&hspi2, (unsigned char *)data, size, 100);
 HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_SET);
 
 HAL_Delay(10);
}
источник

DD

Davydov Denis in ru_ASUTP
а вот тут без коментария через неделю уже не вспомнб как оно работает :)
источник

DD

Davydov Denis in ru_ASUTP
// num - конвертируемое число
// dest - строка, куда записывается число
// size - размер строки (должен быть не меньше записываемого числа + 1
//     для символа окончания строки, и + 1 если есть десятичная точка)
// point - позиция десятичной точки от конца, или 0, если ее нет
void numToStr(uint32_t num, char *dest, uint8_t size, uint8_t point) {
 uint8_t i, pos = size - 1;
 
 for (i = 0; i < size; i++) dest[i] = ' ';
 dest[size] = 0;
 
 if (point) size -= 1;
 
 for (i = 0; i < size; i++) {
   
   if (point && point == i) {
     dest[pos--] = '.';
   }
   
   dest[pos--] = '0' + num % 10;
   num /= 10;
   
   if ((!num && !point) || (!num && point <= i)) break;
 }
}
источник

KW

Konstantin Wilhelm in ru_ASUTP
Davydov Denis
типа тут и так все ясно

void fRead(uint16_t addr, void *data, uint32_t size) {
 uint8_t cmd[3];
 
 // читаем память
 cmd[0] = 0x03;
 cmd[1] = addr >> 8;
 cmd[2] = addr & 0xFF;
 
 HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_RESET);
 HAL_SPI_Transmit(&hspi2, cmd, 3, 100);
 HAL_SPI_Receive(&hspi2, (unsigned char *)data, size, 100);
 HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_SET);
 
 HAL_Delay(10);
}
А пинам вы значащие имена не присваиваете?
источник

DD

Davydov Denis in ru_ASUTP
Konstantin Wilhelm
А пинам вы значащие имена не присваиваете?
неа, а нафига, если они в двух функциях там участвуют, и так понятно к чему они относятся
источник