Методические рекомендации для повторно используемого кода в C, C++

Я проходил руководство по повторной входимости по методическим рекомендациям при написании повторно используемого кода.

Что другие ссылки и ресурсы затрагивают эту тему?

Что подобные линту инструменты могут использоваться для проверки на эти проблемы?

7
задан Ben Voigt 14 July 2010 в 02:25
поделиться

3 ответа

Руководства достаточно.

Мое личное правило - всего 2 правила для переписывания кода:

  1. брать только параметры pass by value, использовать только значения, переданные в качестве параметров в функции.

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

0
ответ дан 7 December 2019 в 16:38
поделиться
  • Используйте локальные переменные.
  • Не используйте статические локальные или глобальные переменные, даже TLS не поможет вам с рекурсией / реентерабельностью.
  • Восстанавливайте все инварианты перед выполнением обратных вызовов.
  • Не держите блокировки во время выполнения обратных вызовов. Если вам это абсолютно необходимо (а я бы все равно искал способ избежать этого), то убедитесь, что вы знаете, что произойдет, если вы попытаетесь снова ввести блокировку в поток, который уже ее держит. Как минимум, вы должны проверить это, иначе в зависимости от блокировки вы получите тупик или нарушение инвариантов (т.е. коррупцию).
2
ответ дан 7 December 2019 в 16:38
поделиться

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

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

1
ответ дан 7 December 2019 в 16:38
поделиться