Ответы пользователя по тегу Проектирование программного обеспечения
  • Как правильно разделить Си проект на файлы?

    BacCM
    @BacCM
    C++ почти с рождения
    Ну как минимум использование перекрестных переменных уже нелогично. Лучше функциями это обернуть. Как бы инкапсулировать в модуль.
    Правильный способ это на бумаге нарисовать модули/объекты системы и обозначить как они взаимодействуют между собой и внешним миром. И уже исходя из этого разбивать. В идеале чем больше модуль похож на черный ящик тем лучше с точки зрения системности.
    Как лакмусовая бумажка может использоваться то, что из одного модуля вдруг надо копаться в кишках другого, или знать о том как там что-то реализовано.
    Как пример именно для Си - стандартная библиотека. Открываешь файл получаешь указатель на структуру FILE но тебе, абсолютно не важно какие там поля, создается она по malloc или заранее созданный объект из некоего массива таких объектов. Это уже скрыто реализацией. Есть функции которые работают с этим указателем и всё.
    Как плохой пример "не очень черного ящика" можно рассмотреть strtok строка которая передается на вход будет модифицироваться и портится, что может быть не очевидным из семантики. Но сделано в угоду скорости и использования памяти.
    Ответ написан
    2 комментария
  • Что удобнее, тем, кто уже пробовал - Передавать ошибку return или сразу бросать Exception прямо из функции/foreach?

    BacCM
    @BacCM
    C++ почти с рождения
    Как уже писали зависит от архитектуры.
    Но самое главное чтобы было однообразие подхода и не было мешанины

    Чисто субъективно мне больше по душе возвраты ошибок через return. И причин тому несколько.
    Не все компиляторы легко переваривают исключения, да в 2017 году! Например для встраиваемых систем для DSP вообще много где рекомендуется чистый C. И включение поддержки исключений и rtti не рекомендовано.
    Ответ написан
    7 комментариев