В сообщении в блоге на F # для развлечения и выгоды говорится:
В функциональном дизайне очень важно отделить поведение от данных. Типы данных просты и «тупы». И затем отдельно у вас есть ряд функций, которые действуют на эти типы данных.
Это полная противоположность объектно-ориентированному дизайну, где поведение и данные должны быть объединены. В конце концов, это именно то, что класс. На самом деле в действительно объектно-ориентированном дизайне у вас не должно быть ничего, кроме поведения - данные являются частными и могут быть доступны только через методы.
На самом деле, в OOD отсутствие поведения вокруг типа данных считается плохой вещью и даже имеет название: « модель анемичной области ».
Учитывая, что в C # мы, кажется, продолжаем заимствовать у F # и пытаемся писать более функциональный код; почему мы не заимствуем идею разделения данных / поведения и даже не считаем ее плохой? Это просто то, что определение не подходит для ООП, или есть конкретная причина, по которой это плохо в C #, которая по какой-то причине не применяется в F # (и фактически перевернута)?
(Примечание: меня особенно интересуют различия в C # / F #, которые могут изменить мнение о том, что хорошо / плохо, а не люди, которые могут не согласиться с любым мнением в сообщении в блоге).