Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Каких принципов кодирования на чистом языке Си нужно придерживаться в open source, чтобы код был поддерживаемым, гибким и расширяемым?

ПрограммированиеСпо+3
Анонимный вопрос
  ·   · 2,9 K
Погромист на C#  · 16 янв 2022
Как и во многих других языках, независимо opensource или нет:
  1. Комментируй всё неочевидное. Описание используемых алгоритмов, или причины выбора тех или иных подходов при написании кода.
  2. Придерживайся хоть каких-то стандартов (своих или чужих). Посмотри например на MISRA и Linux Kernel Coding Style.
  3. Не игнорируй предупреждения компилятора. Пусть проблемы на ранних этапах находят автоматические инструменты, а не пользователи. Подробнее тут: https://habr.com/ru/post/490850/
  4. Используй инструменты статического анализа - Sonar Qube, PVS-Studio и так далее, как дополнение к предыдущему пункту.
  5. Пиши unit-тесты
  6. Пиши документацию так, чтобы человек не знакомый с твоим кодом мог с нуля его собрать, запустить, и понять как работать с решением и самим кодом.
  7. Автоматизируй сборку, чтобы она была независима от твоего компьютера.
  8. Ну и по мелочи - не усложняй, не используй goto, если можно не использовать, следи за цикломатической и когнитивной сложностью. Между понятностью и краткостью всегда выбирай понятность. А выбирая между производительностью и поддерживаемостью, очень хорошо подумай.
А для гибкости и расширяемости можно применять принципы KISS, DRY, а также, частично, SOLID и GRASP (они придумывались для ООП, так что для совсем чистого си без самодельного ООП некоторые принципы не имеют смысла)
1 эксперт согласен
🍀 Естествоиспытатель   · 16 янв 2022  · shymanovsky.mooo.com
Плохим стилем в программировании считается отсутствие комментариев в тексте программы. Делайте пояснения, что и как работает по ходу кодирования. Тогда ваш код будет поддерживаемым, гибким и расширяемым. И да, избегайте... Читать далее
Ну не только. 1. Комментарии не сделают твой код расширяемым и поддерживаем 2. Кроме глобальных переменных есть и... Читать дальше