Перейти к содержанию
    

MISRA C: записки параноиков или...

15 minutes ago, jcxz said:

Имхо: Определяющим мерилом должна быть читаемость кода, а не тупое скобкотыкательство везде где лезет. Если от добавления скобок код становится читаемей - нужно добавить, если сановится нечитаемым - убрать.

 

Да пишите как Вам хочется только не пытайтесь свои творения впихнуть в изделия от которых могут пострадать люди. Цель стандарта MISRA C — улучшить безопасность, переносимость и надежность программ для встраиваемых систем. Написан он на основании опыта ( как летное руководство в авиации )

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 минут назад, Vasil_Riabko сказал:

Да пишите как Вам хочется только не пытайтесь свои творения впихнуть в изделия от которых могут пострадать люди.

Аналогично и про ваши "творения". :unknw:   Если у вас хоть что-то есть....

10 минут назад, Vasil_Riabko сказал:

Цель стандарта MISRA C — улучшить безопасность, переносимость и надежность программ для встраиваемых систем.

Увеличение количества скобок в исходнике делает код более надёжным??? :shok:  Не знал, спасибо что просвятили... :sarcastic_hand:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 minutes ago, jcxz said:

 

Увеличение количества скобок в исходнике делает код более надёжным??? :shok:  Не знал, спасибо что просвятили... :sarcastic_hand:

MISRA C - это не только скобки . Впрочем для Вас все вокруг дураки не правы и стандарт никому не нужен

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 минут назад, Vasil_Riabko сказал:

MISRA C - это не только скобки

Это скорее страховка при работе с низкоквалифицированным персоналом. Типа надписей "нет ремонтопригодных частей внутри" или "вскрывать только персоналу авторизованных центров" на корпусах бытовой электроники. Но мы-то знаем, что эти надписи предназначены среднестатистическому пользователю без профильного (а то и вообще без никакого) образования.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 минуты назад, Сергей Борщ сказал:

Это скорее страховка при работе с низкоквалифицированным персоналом. Типа надписей "нет ремонтопригодных частей внутри" или "вскрывать только персоналу авторизованных центров" на корпусах бытовой электроники.

:good2::good2::good2:

Или "Не предназначено для сушки кошек" на микроволновке.  :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

23 часа назад, jcxz сказал:

Какая-то бессмыслица.... :wacko2:  Если не обращать внимание на скобки, то как можно понять алгоритм работы кода? Ведь порядок выполнения будет зависеть от комбинации этих скобок.

Ваше фраза эквивалентна: "Те кто использует скобки уже не обращает на них внимание, и не понимают работы алгоритма глядя на код."

Так и знал что зацепятся за эту формулировку.
Под не обращает внимания имелось ввиду что глаз не цепляется за скобки а выбирает чисто выражения, но блок кода выделен явно.
Но это похоже перешло в очередной холивар.

 

22 часа назад, Vasil_Riabko сказал:

Цель стандарта MISRA C — улучшить безопасность, переносимость и надежность программ для встраиваемых систем.

Вот ключевая фраза. Ее и придерживаюсь.
Пишу со скобками и считаю что при передаче исходников между людьми с кодом со скобками будет меньше проблем.


 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, iamnot said:

Пишу со скобками и считаю что при передаче исходников между людьми с кодом со скобками будет меньше проблем.

Да всем понятно, откуда это там и для чего. У меня лично был опыт, когда любители не ставить скобки написали офигенный код, где отступами выделили желаемое, а скобочек не поставили, без скобочек же читаемый код. И всё работало, потому что именно в этот 'else' код у тех ребят не заходил. И сделано это было в библиотеке. А я месяц искал ошибку у себя в коде, который эту библиотеку использовал, а он именно в этот 'else' заходил.

И всё в той ситуации было прекрасно:
- Была и библиотека которая "годами работала и проблем не было"

- "Мы этой библиотекой 7 лет пользуемся, точно у тебя в коде проблема"

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

 

В итоге, когда я залез в код библиотеки, очень быстро нашёл ошибку, поставил скобки и всё заработало.

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

Да и вообще: "В моей практике проблем не было".- это как тот анекдот, когда мужик упал с 55 этажа, пролетает мимо 17-го, и думает: "Ну, пока всё не так уж плохо".

Изменено пользователем one_eight_seven

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

15 минут назад, one_eight_seven сказал:

Да всем понятно, откуда это там и для чего. У меня лично был опыт, когда любители не ставить скобки написали офигенный код, где отступами выделили желаемое, а скобочек не поставили, без скобочек же читаемый код. И всё работало, потому что именно в этот 'else' код у тех ребят не заходил. И сделано это было в библиотеке. А я месяц искал ошибку

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

Могу вспомнить массу примеров где код, с табуном скобок, точно так же скрывал в себе баги. И тоже считался отлаженным. Я выкашивал этот табун и находил и исправлял эти баги. Которые скобкотыкатели в своём коде найти не сумели.  :unknw:

Ещё раз: Натыкание кучи скобок в код не делает его надёжным.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 minutes ago, jcxz said:

Могу вспомнить массу примеров где код, с табуном скобок, точно так же скрывал в себе баги. И тоже считался отлаженным. Я выкашивал этот табун и находил и исправлял эти баги. Которые скобкотыкатели в своём коде найти не сумели.  

Вот прямо убрали скобки и код стал рабочим? Или всё-таки проблемы были в другом?

Дело в том, что в моём случае я действительно просто добавил скобки,  и код стал рабочим.

Изменено пользователем one_eight_seven

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Только что, one_eight_seven сказал:

Вот прямо убрали скобки и код стал рабочим? Или всё-таки проблемы были в другом?

Убрал скобки (и многий другой мусор, заслонявший структуру алгоритма) и баг стал явно видим. За лесом скобок написатели кода сами видимо потерялись и не заметили бага.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну вот видите "и многий другой мусор"

Скобки ничего не заслоняют. Более того, если после if/else более, чем одна строка, скобки будут всё равно. И не нужно строить из себя инвалида по зрению, который резко слепнет, когда после if/else одна строка, и прозревает, когда их две и больше. Хотя бы по той причине, что для того, чтобы посчитать одна там строка или две - уже надо иметь зрение. Отмазка жалкая и мерзкая.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 минуты назад, jcxz сказал:

Убрал скобки (и многий другой мусор, заслонявший структуру алгоритма) и баг стал явно видим. За лесом скобок написатели кода сами видимо потерялись и не заметили бага.

Убрали Вы их из-за того, что привыкли писать без скобок. Об этом я писал ранее - непривычный стиль.
А нашли баг потому что компетенция, свежий взгляд.
Так как при наличии скобок код компилировался, то скобки были не причем.
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мне вот этот классический пример ошибок нравится:

if(one)
    if(two)
        foo();
else
    bar();

Тоже встречал. Как правильно сказал выше Сергей Борщ, это делают новички. Но зато код какой читаемый!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

28 минут назад, iamnot сказал:

А нашли баг потому что компетенция, свежий взгляд.

Компетенция компетенцией, но пока лишний бурелом не выкосил - не мог найти причину глюков.

29 минут назад, one_eight_seven сказал:

если после if/else более, чем одна строка, скобки будут всё равно.

Я ничего не имею против скобок там, где они реально нужны.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Из всего понял только то, что библиотека, которую Вам, ув. @one_eight_seven, дали, была кривая. Ведь это можно было найти? Можно! Вы же нашли. То, что ее не нашли программисты той библиотеки - так это сугубо их косяк. Равно как они же могли подложить мину и в совершенно другом месте, не связанном с расстановкой скобок.

41 минуту назад, one_eight_seven сказал:

Мне вот этот классический пример ошибок нравится...

ИМХО, такие промахи приводят к потенциально неправильному алгоритму работы в целом и проявляются быстро.

Я тоже не против скобок, но только там, где без них обойтись нельзя. А то если так подумать, то и else if() нужно избегать и огораживаться скобками.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...