@Rudtoha

Как правильно разделить Си проект на файлы?

Всем привет! Вопрос крайне дилетантский: есть ли какие-то рекомендации/требования/правила по созданию архитектуры проекта? Подключать .h файлы нужно в .c или .h? Какое количество extern переменных уже считать "плохим"? и тд
Если более локально: у меня есть два .с и два .h файла. Каждый из них использует перекрестные переменные. Хочу все оформить так, чтобы было читабельно и логично.
  • Вопрос задан
  • 1026 просмотров
Решения вопроса 1
BacCM
@BacCM
C++ почти с рождения
Ну как минимум использование перекрестных переменных уже нелогично. Лучше функциями это обернуть. Как бы инкапсулировать в модуль.
Правильный способ это на бумаге нарисовать модули/объекты системы и обозначить как они взаимодействуют между собой и внешним миром. И уже исходя из этого разбивать. В идеале чем больше модуль похож на черный ящик тем лучше с точки зрения системности.
Как лакмусовая бумажка может использоваться то, что из одного модуля вдруг надо копаться в кишках другого, или знать о том как там что-то реализовано.
Как пример именно для Си - стандартная библиотека. Открываешь файл получаешь указатель на структуру FILE но тебе, абсолютно не важно какие там поля, создается она по malloc или заранее созданный объект из некоего массива таких объектов. Это уже скрыто реализацией. Есть функции которые работают с этим указателем и всё.
Как плохой пример "не очень черного ящика" можно рассмотреть strtok строка которая передается на вход будет модифицироваться и портится, что может быть не очевидным из семантики. Но сделано в угоду скорости и использования памяти.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@FD4A
Хорошая архитектура только косвенно зависит от языка программирования. Я бы рекомендовал почитать Чистую архитектуру Роберта Мартина, читается легко и всё по делу.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы