22 Два вида свободы

      Комментарии к записи 22 Два вида свободы отключены

Помечено: ,

В этой теме 0 ответов, 1 участник, последнее обновление  Васильев Владимир Сергеевич 4 мес., 2 нед. назад.

  • Автор
    Сообщения
  • #3600

    Существует два вида свободы — хорошая и плохая. Когда-то давно, когда еще никто толком не умел программировать, когда главным критерием качества программы был критерий «программа работает», программисты радовались любой свободе, которая им предоставлялась, совершенно не задумываясь о том, хорошая это свобода, или плохая.

    Любое стороннее решение, будь то полноценная библиотека или единственный класс, предоставляют вам определенную функциональность, а вместе с ней и некоторую свободу действий.

    Отличить плохую свободу от хорошей очень просто. Хорошая свобода предполагает легкость отказа от предоставленных услуг. Плохая свобода предполагает чрезмерную сложность отказа от услуг, предоставленных сторонним решением.

    Базовый класс и виртуальные функции, паттерн «Visitor», паттерн «Variant», паттерн «Factory», слишком вычурная сериализация — все это примеры плохой свободы. Да, перечисленные механизмы решают поставленные перед ними задачи, однако подумайте, каких усилий будет стоить отказ от любого из этих механизмов в уже существующей системе.

    STL-совместимые контейнеры, паттерн «Adapter» (еще одна статья про паттерн Adapter), библиотека boost::function и boost::bind — это примеры хорошей свободы, поскольку отказ от любого из этих механизмов в пользу любого стороннего аналога пройдет для вас легко и безболезненно.

    Плохая свобода это искусственные и не стандартизованные правила. Плохая свобода это предъявления требований к типам и интерфейсам. Плохая свобода это требования, взятые с потолка.

    Хорошая свобода это минимальные требования, либо их полное отсутствие. Хорошая свобода это требования к семантике, а не к интерфейсу. Хорошая свобода всегда стандартизована, обоснована и оптимальна.

    Используйте механизмы, предоставляющие хорошую свободу. Адаптируйте плохую свободу в хорошую. В собственных решениях предлагайте пользователю минимальные и стандартизованные правила игры.

Для ответа в этой теме необходимо авторизоваться.