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

 
 
> как писать на С в 2016 году
Jenya7
сообщение Jan 25 2016, 15:06
Сообщение #1


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

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



прочитал интересную статью. решил поделиться.
https://habrahabr.ru/company/inoventica/blog/275685/
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sigmaN
сообщение Jan 31 2016, 09:28
Сообщение #2


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...
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jan 31 2016, 11:36
Сообщение #3


Ally
******

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



Цитата(sigmaN @ Jan 31 2016, 11:28) *
Т.е. книгу М.Фаулера Рефакторинг вы тоже не рекомендуете? А ведь там как раз вполне серьезно вводится понятне code smells и даже проводится аналогия с детскими пеленками кажется ))))


Фаулер во-первых пишет про Яву, во-вторых он пишет приложения автоматизации бизнеса, в третьих он пишет, похоже, в том самом notepad-е.
Т.е. с моей точки зрения ссылка на него не в тему.

Цитата(zltigo @ Jan 31 2016, 13:16) *
"Говнокодирование" и "индивидуальный стиль кодирования" это две абсолютно разные вещи. Одна другую не отменяет и не заменяет. Попытки прикрыть говнокодирование разговорами за "индивидуальный стиль" я бы назвал первейшим признаком говнокодера.


Нет, применение унизительных определений для кода это признак эмоциональной неустойчивости и больше ничего.
Т.е. говорящий на самом деле не уверен в собственном коде.
Даже больше, тот кто применяет термин "говнокод" сразу теряет часть своей репутации.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 31 2016, 11:53
Сообщение #4


Гуру
******

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



QUOTE (AlexandrY @ Jan 31 2016, 13:36) *
Даже больше, тот кто применяет термин "говнокод" сразу теряет часть своей репутации.

Любая проблема сначала должна быть четко и однозначно сформулирована. Если проблема заключется в том, что написаное является говном, то это так и надо называть, а не "индивидуальным стилем кодирования". Замена слова "говнокод" эвфемизмами на, например, "код написанный альтернативно одаренным талантом с ярко выраженным индивидуальным стилем кодирования", сути проблемы, увы, не меняет sad.gif.
Говнокод на самом деле может по нынешним временам писаться не только конечным программистом, но и всякими "визардами" или притаскиваться в "библиотеках". Относительно недавно делал рефакторинг говнокода. Те, кто его родил мне знакомы по работе и в общем случае говнокодерами совершенно не являются. Но, одно но. Контроллер был кипарисовский PSoC. C железом там работать тяжело, посему кипарисовцы радостно навязывают использование визарда. Визард генерит великолепно стилистически выверенный говнокод. Дальше выбор, либо лепить из этого говна, либо нет. Из говна конфетку не сделаешь, зато быстро. Сделали быстро. Нет все заработало и работало годами. Только вот количество оборудованя в системе росло, росло и выросло до того, что система стала захлебыватся по пропускной способности канала связи с сервером. Причем канал-то как-бы и достаточный, но есть одна проблема он эфирный, посему сбои, посему на запросы сервера могут и не ответить, посему таймауты. Так вот в таймаутах-то дерьмо в вылилось. Говнокод из говнкогда был сделан так, что ответы на запросы сервера были не самые приоритетные, посему таймауты вынужденно большими. Как только количество оборудования с течением времени увеличили и уровень ошибок возрос, то все и встало колом.
Ответить быстро на запрсы сервера не получалось, потому, что из визадовсково говнокода даже хотя-бы примитивно построенную системку на вложенных прерываниях не построить.
Пришлось говнокод чистить.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd June 2025 - 14:09
Рейтинг@Mail.ru


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