Объектно-ориентированное проектирование (OOD) объединяет данные и их методы. Это, насколько я вижу, позволяет достичь двух замечательных вещей: обеспечивает инкапсуляцию (поэтому мне все равно, какие данные есть, только как я получаю нужные значения) и семантику (она связывает данные вместе с именами и методы последовательно используют данные, как первоначально предполагалось).
Так в чем же сила OOD? В противоположность этому функциональное программирование приписывает богатство глаголам, а не существительным, и поэтому инкапсуляция и семантика обеспечиваются методами, а не структурами данных.
Я работаю с системой, которая находится на функциональном конце спектра и постоянно жаждет семантики и инкапсуляции ОО. Но я вижу, что инкапсуляция ОО может быть препятствием для гибкого расширения объекта. Так что на данный момент я вижу семантику как большую силу.
Или инкапсуляция является ключом ко всему стоящему коду?
Редактировать: я имею в виду именно тот тип инкапсуляции, который ОО предоставляет здесь. changeColor(door,blue)
становится door.changeColor(blue)
.