|
как писать на С в 2016 году |
|
|
|
 |
Ответов
|
Jan 31 2016, 09:28
|

I WANT TO BELIEVE
     
Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751

|
Цитата То что некоторые называют "говнокодом". Хотя, надо бы банить за применение такого определения. Т.е. книгу М.Фаулера Рефакторинг вы тоже не рекомендуете? А ведь там как раз вполне серьезно вводится понятне code smells и даже проводится аналогия с детскими пеленками кажется )))) Нет уж. Говнокод это как раз таки абсолютно обоснованное понятие. И это не то-же самое, что разные стили оформления кода(на что будет влиять упомянутый Visual Studio с Visual Assist). В процессах построения ПО уже все хорошо изучено и изложено. Каталогизировано по степени запаха. И даже с примерами. Реально тот-же Фаулер прямо четко и конкретно указывает какие признаки обладают дурными запахами и что можно сделать и почему это нужно сделать(примеры из разных жизненных ситуаций почему проект потом в это упирается). Цитата для работы с периферией используется номер (например номер UART: void usart_set_baudrate (uint32_t usart, uint32_t baud)), а у меня все мои либы используют обычно указатель на хэндл того же UART. Что, на мой взгляд гораздо прямее, т.к. не нужны никакие if-else по номеру, а сразу usart->sfr.BRR =XX. Ну тут можно поспорить. С точки зрения принципов сокрытия информации тут как раз лучше подходит абстракция порта до номера, а не предлагать таскать везде этот указатель на структуру(хэндл) порта. Эта структура по идее вообще должна как можно реже всплывать и находиться в кишках HALа ибо есть ни что иное как способ представления порта внутри HALa. Наружу выводится интерфейс. Просто Си не позволяет сделать это естественным образом и часто таки заставляет программиста таскать с собой хэндл, но это уже другая история... Но если хэндл пользователю либы не виден и ввели номер - это архитектурно правильное решение я считаю! Цитата if-else по номеру, а сразу usart->sfr.BRR =XX. опять же классики учат вначале строить систему максимально правильно(сюда входит и принцип сокрытия информации) а после профилирования устранить узкие места. Если например в коде будет встречаться какой-нибудь uart_send(uint32_t usart, char* string); и эта функция будет дергаться так часто, что упомянутый if-else реально начнет влиять на производительность то например можно будет его упразднить путем добавления функции usart1_send(char* string); где будет прямое обращение к хэндлу порта. Однако же я сомневаюсь что до этого дойдет в данном случае(ибо usart медленный).
--------------------
The truth is out there...
|
|
|
|
|
Jan 31 2016, 11:36
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(sigmaN @ Jan 31 2016, 11:28)  Т.е. книгу М.Фаулера Рефакторинг вы тоже не рекомендуете? А ведь там как раз вполне серьезно вводится понятне code smells и даже проводится аналогия с детскими пеленками кажется )))) Фаулер во-первых пишет про Яву, во-вторых он пишет приложения автоматизации бизнеса, в третьих он пишет, похоже, в том самом notepad-е. Т.е. с моей точки зрения ссылка на него не в тему. Цитата(zltigo @ Jan 31 2016, 13:16)  "Говнокодирование" и "индивидуальный стиль кодирования" это две абсолютно разные вещи. Одна другую не отменяет и не заменяет. Попытки прикрыть говнокодирование разговорами за "индивидуальный стиль" я бы назвал первейшим признаком говнокодера. Нет, применение унизительных определений для кода это признак эмоциональной неустойчивости и больше ничего. Т.е. говорящий на самом деле не уверен в собственном коде. Даже больше, тот кто применяет термин "говнокод" сразу теряет часть своей репутации.
|
|
|
|
|
Jan 31 2016, 11:53
|

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

|
QUOTE (AlexandrY @ Jan 31 2016, 13:36)  Даже больше, тот кто применяет термин "говнокод" сразу теряет часть своей репутации. Любая проблема сначала должна быть четко и однозначно сформулирована. Если проблема заключется в том, что написаное является говном, то это так и надо называть, а не "индивидуальным стилем кодирования". Замена слова "говнокод" эвфемизмами на, например, "код написанный альтернативно одаренным талантом с ярко выраженным индивидуальным стилем кодирования", сути проблемы, увы, не меняет  . Говнокод на самом деле может по нынешним временам писаться не только конечным программистом, но и всякими "визардами" или притаскиваться в "библиотеках". Относительно недавно делал рефакторинг говнокода. Те, кто его родил мне знакомы по работе и в общем случае говнокодерами совершенно не являются. Но, одно но. Контроллер был кипарисовский PSoC. C железом там работать тяжело, посему кипарисовцы радостно навязывают использование визарда. Визард генерит великолепно стилистически выверенный говнокод. Дальше выбор, либо лепить из этого говна, либо нет. Из говна конфетку не сделаешь, зато быстро. Сделали быстро. Нет все заработало и работало годами. Только вот количество оборудованя в системе росло, росло и выросло до того, что система стала захлебыватся по пропускной способности канала связи с сервером. Причем канал-то как-бы и достаточный, но есть одна проблема он эфирный, посему сбои, посему на запросы сервера могут и не ответить, посему таймауты. Так вот в таймаутах-то дерьмо в вылилось. Говнокод из говнкогда был сделан так, что ответы на запросы сервера были не самые приоритетные, посему таймауты вынужденно большими. Как только количество оборудования с течением времени увеличили и уровень ошибок возрос, то все и встало колом. Ответить быстро на запрсы сервера не получалось, потому, что из визадовсково говнокода даже хотя-бы примитивно построенную системку на вложенных прерываниях не построить. Пришлось говнокод чистить.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
Сообщений в этой теме
Jenya7 как писать на С в 2016 году Jan 25 2016, 15:06 EvilWrecker А где тут интересные моменты? Всегда считал данный... Jan 25 2016, 15:25 alexunder Цитата(EvilWrecker @ Jan 25 2016, 16:25) ... Jan 26 2016, 22:12  TSerg Цитата(alexunder @ Jan 27 2016, 01:12) но... Jan 26 2016, 22:14 Эдди Быдлохабра сейчас еще хуже стала, потому что интер... Jan 25 2016, 15:35 AlexandrY Цитата(Jenya7 @ Jan 25 2016, 17:06) прочи... Jan 25 2016, 15:41 Jenya7 ну лично для меня много интересных моментов котор... Jan 25 2016, 15:42 zltigo QUOTE (Jenya7 @ Jan 25 2016, 17:42) мелоч... Jan 25 2016, 15:55 Эдди Jenya7, не надо на этот бред внимания обращать, по... Jan 25 2016, 15:53 EvilWrecker ЦитатаБыдлохабра сейчас еще хуже стала, потому что... Jan 25 2016, 15:54 Сергей Борщ Вот если совсем коротко - в 2016 году надо писать ... Jan 25 2016, 16:17 zltigo QUOTE (Сергей Борщ @ Jan 25 2016, 18:14) ... Jan 25 2016, 16:17  Сергей Борщ Цитата(zltigo @ Jan 25 2016, 18:17) Локал... Jan 25 2016, 16:22   zltigo QUOTE (Сергей Борщ @ Jan 25 2016, 18:22) ... Jan 25 2016, 17:01 smalcom Цитатапрочитал интересную статью. решил поделиться... Jan 25 2016, 16:18 krux пожалуйста, не надо такого.
особенно в разделе для... Jan 25 2016, 17:10 zltigo QUOTE (krux @ Jan 25 2016, 19:10) не надо... Jan 25 2016, 18:16  krux Цитата(zltigo @ Jan 25 2016, 21:16) Вы не... Jan 25 2016, 18:58 ViKo Ну, одну пользу я уже извлек - char нужно произнос... Jan 25 2016, 18:31 Сергей Борщ Цитата(ViKo @ Jan 25 2016, 20:31) void pr... Jan 25 2016, 19:59 Hexel господа программисты, прокомментируйте пожалуста в... Jan 25 2016, 20:26 Dog Pawlowa Цитата(Hexel @ Jan 25 2016, 23:26) проком... Jan 26 2016, 07:01 Сергей Борщ Цитата(Hexel @ Jan 25 2016, 22:26) проком... Jan 26 2016, 08:36  Dog Pawlowa Цитата(Сергей Борщ @ Jan 26 2016, 11:36) ... Jan 26 2016, 09:45   AlexandrY Цитата(Dog Pawlowa @ Jan 26 2016, 11:45) ... Jan 26 2016, 10:04  zltigo QUOTE (Сергей Борщ @ Jan 26 2016, 10:36) ... Jan 26 2016, 10:04 smalcom ЦитатаNULL vs Nil
nullptr )
Цитатакогда носители ... Jan 26 2016, 13:35 Ga_ry Статью разбили в пух и прах.
Так как все таки писа... Jan 26 2016, 13:59 smalcom ЦитатаТак как все таки писать на си в 2016, у кого... Jan 26 2016, 14:58 Quasar Какая-то обезьянская статья, ошибками называются в... Jan 26 2016, 17:22 nill Цитата(zltigo @ Jan 26 2016, 16:04) Прили... Jan 27 2016, 05:07 zltigo QUOTE (nill @ Jan 27 2016, 07:07) zltigo,... Jan 27 2016, 15:07 Herz Господа! К сожалению, ветка уклонилась в обсуж... Jan 28 2016, 21:18 adnega Цитата(Herz @ Jan 29 2016, 00:18) Давайте... Jan 29 2016, 06:23 ViKo Изучая исходники с github, заметил, что в качестве... Jan 29 2016, 07:17 smalcom Приведите пример, пжл. Как помне, то это не очень ... Jan 29 2016, 08:12 ViKo http://libopencm3.github.io/docs/latest/us...550c1... Jan 29 2016, 08:15 sigmaN Цитата(ViKo @ Jan 29 2016, 10:17) Изучая ... Jan 29 2016, 18:41 ViKo Цитата(sigmaN @ Jan 29 2016, 21:41) Кажет... Jan 29 2016, 18:54  demiurg_spb Цитата(ViKo @ Jan 29 2016, 21:54) libopen... Jan 30 2016, 19:29 sigmaN Просто по вашему описанию и у меня и у smalcom, ка... Jan 29 2016, 19:06 syoma Не знаю на счет веб дизайна и компьютерщиков, но п... Jan 29 2016, 20:03 AlexandrY Цитата(syoma @ Jan 29 2016, 22:03) И подх... Jan 30 2016, 20:38  zltigo QUOTE (AlexandrY @ Jan 30 2016, 22:38) Ко... Jan 31 2016, 11:16 sigmaN Ну тоже, извините меня, глупо следовать жестким ст... Jan 29 2016, 21:29 smalcom Цитатаописывается какой-то "говнокод-подход... Jan 29 2016, 22:12 sigmaN ЦитатаУказатель на стуктуру более, чем достойный у... Jan 31 2016, 12:56 zltigo QUOTE (sigmaN @ Jan 31 2016, 14:56) А я г... Jan 31 2016, 13:33 sigmaN ЦитатаАга. Можно постараться и нагородить говнокод... Jan 31 2016, 13:44 zltigo QUOTE (sigmaN @ Jan 31 2016, 15:44) Нет, ... Jan 31 2016, 13:55 sigmaN ЦитатаУ меня лет 20 уже тому назад в одной моей си... Jan 31 2016, 14:29 zltigo QUOTE (sigmaN @ Jan 31 2016, 16:29) так ч... Jan 31 2016, 16:57
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|