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

    Adamos
    @Adamos
    Такой рецепт: используйте паттерны, когда вам кажется, что вы можете их использовать, и не бойтесь выкинуть неудачный код только потому, что там красиво использованы паттерны.
    Постепенно придете к пониманию, когда их нужно применять и как.
    Просто по книжкам этого понимания не получишь.
    Ответ написан
  • Подойдут ли web-технологии для нагруженной медицинской системы?

    Adamos
    @Adamos
    Я бы разложил проблему на отдельные задачи и не смешивал их без необходимости.
    Очевидно, нужна общедоступная веб-морда для записи с актуальными данными. Но совершенно незачем держать на том же сервере конфиденциальную информацию. Тем более, что она должна быть доступна в клинике даже при отключенном интернете.
    Имеет смысл создать несколько изолированных, но общающихся между собой узлов - скажем, веб-морда в интернете и веб-морда на внутреннем сервере, с которой работают сотрудники, но она не торчит в интернет. Внутренний сервер запрашивает у сайта, что там с расписанием, но связь односторонняя, и взлом или отвал интернета ничего всерьез не нарушит. Внутренние сервера нескольких клиник поддерживают общую базу, но уже неспешно, без завязки на постоянный аптайм...
    Ответ написан
    Комментировать
  • Проектирование по контракту. Это для повторного использования или для корректности ПО?

    Adamos
    @Adamos
    Контракт, как я понимаю этот термин - это то, что весь прочий код (а также те, кто использует его позже) должны знать о конкретном коде для взаимодействия с ним. В ООП в этой роли традиционно выступает публичный интерфейс класса.
    Абстрактные же классы и интерфейсы позволяют всему прочему коду ничего не знать о целой иерархии классов, которые наследуют эти абстракции. Внешние связи кода сужаются до минимума. И с точки зрения уменьшения сложности, тестирования (да и вообще понимания, что происходит в коде) это, конечно, очень большой плюс.
    Ответ написан
    Комментировать
  • Вопрос по паттернам проектирования?

    Adamos
    @Adamos
    Тут такое дело: паттерны - это способы взаимодействия классов, а не метод написания самих классов.
    Если вы нормально пишете классы, соблюдая SOLID, то для вас не будет большой проблемой наладить между ними взаимодействие, используя тот или иной паттерн, и переписывать основной код не понадобится.
    Если же вы просто фапаете на GoF и пытаетесь вымучить в коде свои представления о том, как вы их поняли, мужественно преодолевая ООП - все равно получится говнокод, который придется несколько раз переписывать для вменяемой работы. Так что на этом этапе паттерны скорее вредны.
    Ответ написан
    Комментировать
  • Изоляция данных - следует ли внешней системе-поставщику данных знать о внутренних идентификаторах системы-потребителя данных?

    Adamos
    @Adamos
    "Ну конечно, естественно, само собой разумеется - нет!" (Гэндальф в русском переводе).
    Эта область называется "инкапсуляция", и это самые азы архитектуры.
    Ответ написан
  • С++. Создание динамического массива, хранящего типы данных как элементы массива. Возможно ли каким-либо образом?

    Adamos
    @Adamos
    Фабрика объектов единообразно создает классы, у которых единообразный интерфейс.
    Вам нужно наделать классов, которые принимают строку значения и строку типа, обрабатывают их и ведут себя снаружи совершенно одинаково. Тогда то, что у них внутри обрабатываются данные разных типов, не будет иметь значения, и экземпляры таких классов можно будет собрать, например, в map с ключом-строкой, в которой будет тип.
    Ответ написан
    Комментировать
  • Какие технологии и архитектуру выбрать при проектировании сервера контроля доступа?

    Adamos
    @Adamos
    Отдайте базу веб-серверу управления и не подпускайте к ней никого, выполняя все правки и выборки только через API сервера управления. Жизнь сразу облегчится, особенно если API будет высокоуровневым, а не дублированием CRUD.
    А серверу, обслуживающему железо, все равно надо самому логировать все, что с ним происходит. Хоть голым текстом - логи понадобятся только для разборок с факапами.
    Ответ написан
    Комментировать
  • Где размещать вспомогательные классы в mvc архитектуре?

    Adamos
    @Adamos
    /vendor/{your_company}/{project}?
    Ответ написан
    Комментировать
  • Существуют ли правила проектирования интерфейса?

    Adamos
    @Adamos
    Если имеется в виду именно интерфейс, а не архитектура, то вам нужно заклинание "Human Interface Guidelines". Можно начать колдовать с Википедии.
    Ответ написан
    Комментировать
  • Проект со сложной логикой на Symfony – как проектировать? Примеры?

    Adamos
    @Adamos
    > способ сделать плоским наследование групп типа "manager может делать всё то, что и customer, но ещё вон то и вот это"? Резоннее и более поддерживаемо будет дублировать все права?

    Имхо, все эти заморочки с наследованием групп нужны только для удобства администрирования. И место им - в админке, а не в группах. Сделайте удобное редактирование групп, со сравнением с другой группой. Или шаблоны, позволяющие применить пользователю сразу несколько групп. Даже более сложные вещи типа того, что группа менеджеров не может быть применена в отрыве от кастомеров.
    Но все это - не в группах, а именно в этом разделе админки. Назначаются-то группы далеко не так часто, как используются. А вот для использования им стоит быть максимально простыми.
    Ответ написан
    1 комментарий
  • Рекомендуется ли выделять под форматирование и подготовку MySQL запроса целый метод/функцию?

    Adamos
    @Adamos
    Та часть кода, которая работает с БД, должна быть связана со всем остальным кодом только тем набором данных, которые ей надо сохранить или прочесть.
    Логика приложения не должна ничего знать о таблицах, запросах и прочем. Она должна только знать, как обратиться к обертке над БД, чтобы получить или сохранить данные.
    Любые смешения этих двух уровней приводят к говнокоду - это проверено уже несколькими поколениями пыхеров.
    Ответ написан
    2 комментария