Принцип «много функций, работающих с несколькими абстракциями» против ООП

Создатель языка Clojure утверждает, что «открытый и большой набор функций работает с открытым и небольшим набором расширяемых абстракций, что является ключом к алгоритмическим повторное использование и взаимодействие библиотек». Очевидно, что это противоречит типичному ООП-подходу, когда вы создаете множество абстракций (классов) и относительно небольшой набор функций, оперирующих с ними. Пожалуйста, предложите книгу, главу в книге, статью или ваш личный опыт, раскрывающий темы:

  1. мотивирующие примеры проблем, возникающих в ООП, и то, как их можно решить с помощью «множества функций на нескольких абстракциях»
  2. как эффективно выполнять проектирование MFUFA*
  3. как рефакторить код ООП в сторону MFUFA
  4. как Синтаксис языков ООП мешает MFUFA

*MFUFA: «много функций на нескольких абстракциях»

15
задан Matt Fenwick 15 May 2012 в 18:37
поделиться