C. Style Guide for C by MIT // Руководство по стилю для C от MIT

Поделиться
HTML-код
  • Опубликовано: 27 окт 2024

Комментарии • 82

  • @LukasAleks
    @LukasAleks 2 года назад +1

    Спасибо большое за ваш труд!

  • @AndySm1973
    @AndySm1973 2 года назад +2

    Спасибо огромное!
    Для меня визуальное оформление - пунктик:)

    • @NRelectronics
      @NRelectronics  2 года назад +2

      Спасибо)
      На самом деле все важно, и начинается с мелочей, которые часто бросают...

    • @ВежливыйЧеловек-я8ц
      @ВежливыйЧеловек-я8ц 2 года назад +1

      Приятно встретить ещё кого-то с таким же пунктиком в голове. ))
      Тоже люблю, чтобы выглядел код красиво.

    • @NRelectronics
      @NRelectronics  2 года назад +1

      по мне красиво - значит порядок! значит легче читается и сложнее допустить как опечатку так и ошибку.

    • @ВежливыйЧеловек-я8ц
      @ВежливыйЧеловек-я8ц 2 года назад

      @@NRelectronics Вы уже не в первый раз делаете акцент на аккуратность написания кода и это радует. Первый раз столкнулся с этим в Ваших начальных уроках по Си и стал вводить эти знания в свою практику.
      Жаль, но многие, кто выкладывает свои уроки по языкам, не говорят об этом вообще ничего.

    • @NRelectronics
      @NRelectronics  2 года назад +1

      Стараюсь приводить всё к порядку и дисциплине. Кто то помогает, часто советуют. Вот тут один подписчик посоветовал посмотреть на NASA C code Style. Оказалось что я 95% уже показал)

  • @astarkmn
    @astarkmn 2 года назад +4

    Есть еще linux kernel style guide, barr group style guide, nasa style guide.
    По комментариям можно сделать отдельное видео про doxygen

    • @NRelectronics
      @NRelectronics  2 года назад +1

      Особенно понравилось NASA style guide!)))

    • @astarkmn
      @astarkmn 2 года назад

      @@NRelectronics ну правильно он называется NASA. C Style Guide. Но мне лень была смотреть его название. Просто помню, что есть такой документ

    • @NRelectronics
      @NRelectronics  2 года назад

      качнул его сейчас, рассмешила сразу перевернутая страница вверх ногами, ща посмотрим что в космосе используют))

    • @astarkmn
      @astarkmn 2 года назад

      @@NRelectronics ну это же космос. Где верх, где низ - поди разбери))

  • @ViacheslavMezentsev
    @ViacheslavMezentsev 2 года назад +4

    Много видел разного кода для встраиваемых систем и его оформление - это просто беда. Я пишу в разных средах, где-то есть форматтеры, где-то нет, поэтому для себя я один раз настроил утилиту форматирования кода AStyle и чужой код пропускаю через неё. Очень рекомендую для ускорения чтения разношерстного кода. IAR IDE и прочие имеют возможность запуска сторонней утилиты для текущего файла в редакторе. Пользуюсь этим для оформления кода при большом его количестве.
    Вообще, это очень большая тема и стоит почитать книжки, где объясняется почему именно лучше писать так или эдак, например, Совершенный код. Я в своё время прочитал и начал по-другому оформлять свой код.

    • @NRelectronics
      @NRelectronics  2 года назад

      Совершённый код Макконела кажется?

    • @ViacheslavMezentsev
      @ViacheslavMezentsev 2 года назад +1

      @@NRelectronics Да. К примеру, оттуда есть такой совет по поводу организации порядка при объявлении переменных. Не многие понимают, что если упорядочивать переменные при объявлении по мере усложнения типа, то искать их при прочтении гораздо проще, т.к. ты ищешь не только по имени, но и по типу. Обычно простые типы идут сверху (bool, byte, short, int, ...), сложные уже ниже (указатели, строки, структуры и т.д.).
      Казалось бы простой совет - упорядочи переменные по типу, но об этом не задумываешься, если ты самоучка. И там много таких советов по мелочам.
      И - да, к Keil'у можно приделать AStyle, но там есть одна неприятная мелочь - я пока не нашёл удобного места расположения скрипта форматирования. Это зависит от организации дерева проектов.

    • @NRelectronics
      @NRelectronics  2 года назад

      Какой ваш любимый ide для встраиваемых систем?

    • @NRelectronics
      @NRelectronics  2 года назад

      Упорядочение по типу это хороший совет, благодарю!)
      Надо и мне попробовать AStyle ваш к кейлу прикрутить.

    • @ViacheslavMezentsev
      @ViacheslavMezentsev 2 года назад +1

      @@NRelectronics мой большой комментарий пропал, писать заново лень. Кому интересно разберутся с AStyle самостоятельно. Это не панацея, но с ним гораздо удобнее читать отформатированные исходники сторонних библиотек. Пользоваться AStyle не всегда хорошая идея, к примеру, если код библиотеки сильно переусложнён. К сожалению, код для встраиваемых систем всё ещё сильно специфичен, чтобы можно было пользоваться инструментами из мира прикладного ПО.
      Оформление комментариев - это ещё одна отдельная тема, связанная с самодокументированием кода. Программист должен стараться вырабатывать в себе чувство прекрасного. Хотя бы для того, чтобы не было стыдно перед коллегами, если им придётся разгребать созданное тобой.

  • @АлексейШутко
    @АлексейШутко 2 года назад

    Плавно перешли на средний уровень языка си! Отлично! 👍👍👍

    • @NRelectronics
      @NRelectronics  2 года назад +1

      Спасибо!
      Что за такой средний уровень такой?)

  • @aka_vitfil
    @aka_vitfil 2 года назад +4

    в этом отношении Go прекрасен более чем: в нем стиль является частью языка! а по поводу фигурных скобок - известный холивар. я, например, предпочитаю открывающую скобку ставить в конце строки.

    • @NRelectronics
      @NRelectronics  2 года назад +1

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

    • @aka_vitfil
      @aka_vitfil 2 года назад +3

      @@NRelectronics дело привычки. я так и не смог. мне читабельней
      if (...) {
      } else {
      }

    • @aka_vitfil
      @aka_vitfil 2 года назад

      @@NRelectronics самое главное, что в Go именно мой вариант - не пришлось перепривыкать после крестов.

    • @NRelectronics
      @NRelectronics  2 года назад

      дело привычки ;)

    • @NRelectronics
      @NRelectronics  2 года назад

      хорошо что вам Go зашел, жалко, что, для встраиваемых системы альтернативы С/С++ нет.

  • @edgull_tlt
    @edgull_tlt 2 года назад

    Спасибо

  • @sergatmel8242
    @sergatmel8242 2 года назад +1

    Это всё и так, как бы очевидно. ;)
    Хотя некоторые так пишут код, что ничего не понятно.

    • @NRelectronics
      @NRelectronics  2 года назад +1

      У нас некоторые мидлы так напишут что хрен поймёшь... Тут интересное конечно дело))

    • @sergatmel8242
      @sergatmel8242 2 года назад

      @@NRelectronics Оооо, это да. Пишут на отеб... , как то заработало и ладно.
      Как говориться:
      Херяк херяк и в продакшн ;)

    • @NRelectronics
      @NRelectronics  2 года назад +1

      Эт верно!)))

  • @michal621
    @michal621 2 года назад

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

    • @NRelectronics
      @NRelectronics  2 года назад

      А напомните название плагинов в кейле?

  • @OlegBovykin
    @OlegBovykin 2 года назад

    В современных и приличных языках инструмент форматирования кода встроен в поставку языка (Go, Rust), все приличные редакторы кода поддерживают автоформатирование перед сохранением.
    Но C/C++ - это старый язык, однако и для него есть море инструментов. Если коротко, clang-format + выбранный стиль.
    Умные люди придумали класс инструментов: linters. Они служат, в том числе, и для проверки соответствия кода определенному стилю. При наличии конфига с определением стиля и конфликта между людьми линтер всегда прав.
    Дальше добавляем запуск линтера в CI на каждый коммит и сразу видим все проблемы.
    Если что-то может делать робот, пусть это делает робот.

    • @NRelectronics
      @NRelectronics  2 года назад

      Есть ли линтеры на Си или С++ под Кейл иди STM32CubeIDE?

    • @mikhailzaytsev302
      @mikhailzaytsev302 2 года назад

      clangformat довольно багованый, им тяжело пользоваться

    • @OlegBovykin
      @OlegBovykin 2 года назад

      @@NRelectronics Есть линтеры под Си и Си++. Есть ли поддержка линтеров в этих доисторических и отставших от мира инструменатх - понятия не имею. А куб - это отдельное зло, которое приучает людей к ужасной структуре кода с самого начала.

    • @NRelectronics
      @NRelectronics  2 года назад

      тогда какие инструменты по вашему мнению современные? критикуете, предлагайте лучшее ;)

  • @ivanrusev2270
    @ivanrusev2270 2 года назад

    У меня чего то структура действует только main.c.А в других файлах я не могу прописывать пишет ошибка.А typedef struct вообще не действует элементы структуры не могу вообще прописать в чем дело?

    • @NRelectronics
      @NRelectronics  2 года назад

      Стандарт языка не работает в чем дело?

    • @ivanrusev2270
      @ivanrusev2270 2 года назад

      @@NRelectronics Пишу struct ставлю указатель работает а вот ставлю typedef struct не работает.Да но работает в других файлах

  • @avi-crakhome2524
    @avi-crakhome2524 2 года назад

    Коментарии в функциях нужны только в одном случае - когда функция является наглядным примером или конструктором для модификаций пользователя. В остальных случаях надобности заглядывать в функцию нет, достаточно имени и описания.
    Короткие переменные изначально зарезервированы для коротких циклов, которые могут целиком поместиться на экране (без прокрутки).
    Если однобуквенную переменную сделать глобальной - весёлости обеспечены.

    • @NRelectronics
      @NRelectronics  2 года назад

      С однобуквенными согласен, что там когда-то имелось ввиду...

    • @NRelectronics
      @NRelectronics  2 года назад

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

    • @NRelectronics
      @NRelectronics  2 года назад

      Ну можно и не понимать, так пишут большинство программистов, и их код называют гавнокодом. Ничего там не сломаешь, мисра Си например чётко три группы и пошёл разбирать...
      Рассказываю:
      // - комментарий пришёл из плюсов в стандарт Си в С99, соответственно если поддерживать старый код то будет ошибка стат анализатора, и можно ещё, не понимая этого, знаком / закомментировать код следующей строки после строки комментария и код вообще ляжет...
      Поэтому рекомендуют уйти от этих потенциальных проблем и использовать классическое комментированиекомментирование /* */.

    • @avi-crakhome2524
      @avi-crakhome2524 2 года назад

      @@NRelectronics Сломать комментарием программный код - вполне обычная грабля любителей сахара. Там после 100500 вложенности дифлайнов мозг уже отказывает, и подобные ошибки вполне реальны.
      Кстати, мне встречалась либа с программной защитой от вандализма. Можно использовать как есть, но изменить просто невозможно. Там сахар раскрывался до управляющих символов, и имел замыкания в разных файлах. Половина кода на макросах, половина на внешних скомпилированных библиотеках, простого кода очень мало, зато файлов более 15к. Часть файлов собиралась по прямому пути, минуя общий каталог сборки. Отчего либа приобретала признаки бессмертия. Либу писал настоящий японец, отчего информативность немногочисленных комментариев стремится к нулю. Самое странное - она работает!!! И никто не знает как, и почему.

    • @NRelectronics
      @NRelectronics  2 года назад

      Как работает действительно непонятно))

  • @ArtemKAD1
    @ArtemKAD1 4 месяца назад

    Не согласен с нежелательностью размещения комментария справа - комментарий в той-же строке делает информативным листинг поиска без необходимости скакать по коду.

    • @NRelectronics
      @NRelectronics  4 месяца назад

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

  • @Udafff49
    @Udafff49 2 года назад

    Автор мало рекламы, давай каждые полминуты ставь.

    • @NRelectronics
      @NRelectronics  2 года назад

      Шутите))) много тоже плохо)

  • @iXNomad
    @iXNomad 2 года назад

    Почему STM32 так внешне похожа на Eclipse?😂

    • @NRelectronics
      @NRelectronics  2 года назад +1

      STM32CubIDE основан на Atollic, а он в свою очередь на Eclipse)))

  • @wandemeir4394
    @wandemeir4394 2 года назад

    Подскажите какие тесты можно писать в контексте программирования железа?

    • @NRelectronics
      @NRelectronics  2 года назад

      Это хороший вопрос. Я отвечу полно несколько позже.

    • @MrZamuhrishka
      @MrZamuhrishka 2 года назад +1

      Unit тесты с использованием фреймворка Ceedling.

  • @ПавелИльин-н6г
    @ПавелИльин-н6г 2 года назад

    Не пора ли сделать курс по МК ???

    • @NRelectronics
      @NRelectronics  2 года назад +1

      Так есть ведь в соседних плейлистах ;)

    • @ПавелИльин-н6г
      @ПавелИльин-н6г 2 года назад

      @@NRelectronics с нуля???

    • @NRelectronics
      @NRelectronics  2 года назад +1

      Практически с нуля, с азов. Есть на регистрах, есть на хале...

    • @sergsapov2927
      @sergsapov2927 2 года назад

      Весь интернет завален этими курсами по МК с нуля, стоит ли?

  • @khrustalyov1978
    @khrustalyov1978 2 года назад

    А на заставке код на с++!

    • @NRelectronics
      @NRelectronics  2 года назад +1

      Молодцы, что заметили! Так и есть ;) С и С++ вместе всё равно повязаны...

  • @kospov2002
    @kospov2002 2 года назад

    Шикарное обьяснение